python判断两个代数式本质上是不是一样?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python判断两个代数式本质上是不是一样?相关的知识,希望对你有一定的参考价值。
python判断两个代数式本质上是否一样 代码
代数式不一定是可计算的,表达式是可计算的,两者含义不同。
不能直接求值的原因:
1:代数式中的代数量是未知的;
2:代数式中的运算符不一定有对应的python运算;
3:即使能求值并且结果相等,也不代表本质相同,(例5+1、2*3、36**0.5)
因此,需要更复杂的方法来实现该功能。
python对象都可以通过重构__eq__方法来重新定义两个对象之间的比较规则。
定义【代数式(AlgebraicExpression)】类,重新实现它的__eq__方法:比较self和待比较代数式的等价规范形式(standardization)是否一致。
class AlgebraicExpression(object):
....def __eq__(self, other):
........assert isinstance(other, AlgebraicExpression)
........return str(self.standardization)==str(other.standardization)
等价规范形式:
将运算符按最高优先级拆分为多个子运算式与运算符,子运算式做同样的处理,直至子运算式不包含运算符;
运算率和等价规则决定代数式有等价形式:
1:按运算率将可解耦的括号全部解耦;
2:并在同优先级中对算符排序;
3:按等价规则对多目运算中算子排序;
4:然后按顺序重新组装。
参考技术A Python判断两个代数式本质上是否是一样,我认为这个判断两个代数式本质上应该是一样的 参考技术B equals判断的是值是否相同,==判断的是引用是否相同。内容相同的两个字符串其引用可能是不同的。 今天在用Python时,也刚好遇到判断字符串是否相等的问题,纠结了一下,想知道Python中字符串是否有equals方法,但是并没有找到。 参考技术C 1.说明 可以使用 == 运算符判断两个集合是否相等(包含相同的元素),即判断集合 a 和集合 b 中的元素是否相同. 2.语法 set_a == set_b 3.参数 set_a:集合 a. set_b:集合 b. 4.返回值 返回布尔值,如果集合 a 和集合 b 中的元素相同,则返回 True,否则返回 False. 5.实例 # 创建集合a = "刀", "枪", "剑", "戟"b = "戟", "剑", "枪", "刀"c = "斧", "钺", "钩", "叉"# 判断两个集合是否相等print("a==b返回:", a == b) # 返回Trueprint("a==c返回:", a == c) # 返回Falseprint("am.yisu.com
以上是关于python判断两个代数式本质上是不是一样?的主要内容,如果未能解决你的问题,请参考以下文章