我对一种能够进行符号计算的Python库感兴趣,其中符号可以是任意类型的未知数。
以下是我想要编写的代码:
>>> myexpression = symbol("foo") == "bar"
>>> print myexpression
foo == "bar"
>>> print myexpression(foo="quux")
False
>>> myexpression.or_(True)
True
或者一个粗略的近似值就可以了。它甚至不需要那么聪明,我很乐意调用许多额外的内省方法来获得上述结果(例如,即使逻辑公式没有直接简化,也可以这样做)。
我的第一反应是看sympy,但是它似乎对符号变量必须是数字做出了强烈的假设;而我希望至少能够操作序列和集合:
>>> myexpression = sympy.Eq(sympy.Symbol("foo"), 5)
>>> myexpression
foo == 5
>>> myexpression = sympy.Eq(sympy.Symbol("foo"), "bar")
Traceback (most recent call last):
...
sympy.core.sympify.SympifyError: SympifyError: 'bar'
有没有办法让sympy理解非数值变量,或者有其他类似功能的库?
sympy.Symbol
对象为键的字典怎么样? - wberry