我正在使用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));規則(假,真,真)'。不提供字典,因爲它是但更快。 –