1
我想避免乘以1以sympy評估。我如何實現這一目標?避免在sympy中乘以1評估
我不明白爲什麼比方說,乘以0可以是未評估的,而乘以1總是評估。
>>> from sympy import Symbol,Mul
>>> x = Symbol('x')
>>> Mul(1,x,evaluate=False)
x
>>> Mul(0,x,evaluate=False)
0*x
我想避免乘以1以sympy評估。我如何實現這一目標?避免在sympy中乘以1評估
我不明白爲什麼比方說,乘以0可以是未評估的,而乘以1總是評估。
>>> from sympy import Symbol,Mul
>>> x = Symbol('x')
>>> Mul(1,x,evaluate=False)
x
>>> Mul(0,x,evaluate=False)
0*x
這是在https://github.com/sympy/sympy/pull/13188的工作。目前,即使evaluate = False,1(對於Muls)和0(對於Adds)也會自動刪除。如果你只是想解析一些東西(number,foo),你可以使用expr.as_coeff_Mul()
,例如(1+x).as_coeff_Mul() -> (1, 1 + x)
。
是僅打印的最終目標,還是您希望稍後對錶達式進行評估? – rodgdor
我寫過一種解析許多術語的代碼生成器,假設它們是Mul(數字,某物)的形式。當然,我可以修改解析器,但我仍然懷疑,我相信正確的行爲應該是Mul(1,x,evaluate = False)成爲一個具有args =(1,x)的Mul。 –