我想將SymPy表達式的列表按照詞典順序進行規範化。或者至少有一些它的外表。這是簡單的SymPy 0.7.2,似乎已經打破作爲...如何在SymPy中規範化表達式列表?
>>> import sympy
>>> sympy.__version__
'0.7.4.1'
觀察:
>>> f, g = sympy.symbols('f g', cls=sympy.Function)
>>> sorted([f, g])
[f, g]
>>> sorted([g, f])
[f, g]
酷。我回來了詞典排序。現在,如果我申請的功能...
>>> x = sympy.symbols('x')
>>> sorted([f(x),g(x)])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/sympy/core/relational.py", line 226, in __nonzero__
raise TypeError("symbolic boolean expression has no truth value.")
TypeError: symbolic boolean expression has no truth value.
...這裏是TypeError
字符串已經從谷歌搜索出有關在其他地方,但我已經無法辨別一種解決方法。
我看到與[f(x), g(x)].sort().
相同的消息使用set([f(x), g(x)])
在我的大型用例中不起作用,因爲我需要允許重複。
對SymPy 0.7.2和0.7.4友好的方式來規範SymPy表達式列表的任何想法?玩起來有點sorted([f(x),g(x)], lambda x,y: x.compare(y))
似乎工作,但感覺像一口。
完美!謝謝。 'sympy.ordered'給任何想要使用答案的人。 –