我一直在使用 sympy 来帮助简化表达式,但有时我希望 sympy 只进行有限数量的简化/扩展。
例如,假设我有代码:
x = symbols("x")
poly = x*(x**2+x*(x+2))
如果我这样做,
expand(poly)
,我将扩展为没有括号的表达式,但是是否可以仅应用外部分配属性?,即,只得到:x^3+x^2(x+2)
?
我尝试查看https://docs.sympy.org/latest/tutorials/intro-tutorial/manipulation.html,但似乎没有帮助。
您可以使用
deep=False
:
In [51]: x = symbols("x")
...:
...: poly = x*(x**2+x*(x+2))
In [52]: poly
Out[52]:
⎛ 2 ⎞
x⋅⎝x + x⋅(x + 2)⎠
In [53]: expand_mul(poly, deep=False)
Out[53]:
3 2
x + x ⋅(x + 2)
此示例也适用于
expand
,但由于您对所需的操作有选择性,所以我建议使用 expand_mul
。