在我的項目中,我必須使用evaluate=false
當我創建任何Add
或Mul
對象。在這種情況下,我在對這些對象應用等式檢查時遇到了一個問題。這個問題是因爲參數的順序。Python- Sympy問題與評估= False時表達式相等檢查
請考慮下面的例子:
k2=Mul(*[x,y,2],evaluate=False)
k1=Mul(*[x,2,y],evaluate=False)
print k1==k2
結果是false
作爲k2.args
是(x,y,2)
和k1.args
是(x,2,y)
。 因此,雖然比較檢查元組相等性,但它返回false
。 有什麼辦法可以得到想要的結果嗎?
此外,如果我把一些操作上的元組(如反轉順序,然後檢查),它在所述的情況下發生故障時和k2
由不同的形成Mul
對象(如當k1.args
= 2*x,y
和k2.args
= 2*y,x
)
我不能在這裏使用排序,因爲在這種情況下,Add([x+y,z],evaluate=False)
和Add([x+z,y],evaluate=False)
將是兩個不同的表達式。另外,如果我使用evalaute=True
,在這種情況下,Add([x+y],x])
和Add([2*x+y])
將是相同的,我不想要。
我發佈了這個問題,以便有人可以建議我這種方式進行比較。是的,我的乘法總是可交換的。請參閱我的問題 – gsagrawal