因此,正如问题所说,当表达式对象的树的内部结构发生变化时,我想打印整个表达式对象,但由于sympy对象是不可变的,我不能用对象绑定到的名称来打印
下面是一个关于如何更改内部结构的代码示例
from sympy import *
from sympy.abc import x,y
input = 'x*(x+4)+3*x'
expr = sympify(input,evaluate=False)
def traverse(expr):
if(expr.is_Number):
return 1,True
oldexpr = expr
args = expr.args
sargs = []
hit = False
for arg in args:
arg,arghit = traverse(arg)
hit |= arghit
sargs.append(arg)
if(hit):
expr = expr.func(*sargs)
return expr,True
else:
return oldexpr,False
print(srepr(expr))
expr,hit = traverse(expr)
print(expr)
在这里,每当我在表达式树中遇到一个数字时,我就把这个数字改为1。当我做出这样的更改时,我想打印完整的表达式:x*(x+1)+3*x
然后x*(x+1)+x
有谁能给我建议如何做到这一点。你知道吗
只是对你所拥有的东西稍加修改,可能就是你想要的:
这就产生了
/共
相关问题 更多 >
编程相关推荐