我希望sympy停止计算表达式。
我将给予一个例子,我不希望冗余被简化。
import numpy as np
import sympy as sym
a,b,c = sym.symbols('a b c')
with sym.evaluate(False):
exp1 = (c + b) - (b + c - a)
字符串
变量exp1
应简化为a
。
但是,我不想这样。我想保留所有的操作。其中exp1 = (c + b) - (b + c - a)
我在一个with sym.evaluate(False):
块中做了这个声明。
它打印exp1
变量Ok。
然而,当变量被打印到屏幕上时,我没有计算的事情发生了。print(exp1)
个
获取输出并将其分配给一个变量:exp2 = (a - (b - c)) + (b + c)
#这不是正确的表达式print (exp1 - exp2)
#不为零
为什么会这样?防止表达式求值的最佳方法是什么?
最好的问候
1条答案
按热度按时间wqsoz72f1#
打印机更改输出顺序。您可以将顺序设置为
none
以禁用该命令:字符串
不能保留
c + b
周围的括号,因为括号不是表达式的一部分:它们只是在需要时由打印机由于优先级而添加。如果查看表达式的原始
srepr
表示,您可能会更清楚地了解发生了什么:型