2017-09-04 141 views
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 
+0

是僅打印的最終目標,還是您希望稍後對錶達式進行評估? – rodgdor

+0

我寫過一種解析許多術語的代碼生成器,假設它們是Mul(數字,某物)的形式。當然,我可以修改解析器,但我仍然懷疑,我相信正確的行爲應該是Mul(1,x,evaluate = False)成爲一個具有args =(1,x)的Mul。 –

回答

1

這是在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)