我正在使用Python和Sympy。在Python中评估Sympy布尔表达式
我有以下几点:
x,y,z = Symbols('x,y,z')
doc = {x : False, y : True, z: True}
rule = Or(x, And(y,z))
我要寻找一个在Sympy一个函数,将在rule.eval(doc)
返回True
?
编辑: 目前我正在使用rule.subs
和rule.xreplace
两个缓慢地执行,每次调用约0.0003秒。这使得它不切实际。
我想知道你为什么不能做'rule.subs(doc)'? –
嗨,你是对的,我没有提到它。这就是我所使用的'rule.subs'和'rule.xreplace',它们都按预期工作,但具有可怕的性能。我已经分析了我的代码,发现每次执行大约需要0.0003秒。我使用这些功能很多。我正在寻找更有效的方法 –
而且您必须使用sympy?如果没有,那么你可以这样做:'将操作符导入为op; rule = lambda x,y,z:op.or_(x,op.and_(y,z));规则(假,真,真)'。不提供字典,因为它是但更快。 –