我正在使用python和Sympy。
我有以下格式的规则:Or(x,And(y,z))
。
不幸的是,Sympy subs
和xreplace
函数没有提供足够快的实现来验证上述规则是否满足x = False,y = True和z = True。
如何有效地将此表达式转换为给定x,y,z和规则的其他库,无论此赋值是否满足规则,我都将获得True / False?
答案 0 :(得分:0)
你可以通过两种方式在纯python中做到这一点(使用x=True/False, y=True/False, z=True/False
):
x or (y and z)
或(作为0 == False, 1 == True
):
x | (y & z)
然后你可以用以下方法迭代所有组合:
from itertools import product
for x, y, z in product((True, False), repeat=3):
print(x, y, z)
print(x or (y and z))
print(x | (y & z))
print()
为了将sympy函数转换为python表达式,您可以尝试lambdify
module:
from sympy import lambdify, Or, And, var
x, y, z = var('x y z')
or_and = lambdify((x, y, z), Or(x, And(y, z)))
print(or_and(True, False, False))
希望能够像你希望的那样加快解决问题...