如何使用SymPy从布尔表达式的ANF中提取单个单项式?
提取Sympy生成的ANF表达式中的单个单项式
你可以通过Sympy表达式的args属性直接拆分并访问ANF中的单个单项式,具体实现如下:
实现步骤
- Sympy的
ANFform返回的异或表达式(如x ^ y ^ (x&y))本质是Xor类实例,所有子单项式都存储在args属性中,以元组形式返回。 - 直接通过索引访问
args元组中的对应项即可。
完整示例代码
from sympy.logic.boolalg import ANFform from sympy.abc import x, y truth_table = [0, 1, 1, 1] expr = ANFform([x, y], truth_table) # 获取所有单项式的元组 monomials = expr.args # 访问索引为2的单项式(对应x & y) target_monomial = monomials[2] print(target_monomial) # 输出:x & y
注意事项
- 索引从0开始计数,示例中
x ^ y ^ (x&y)的args顺序为(x, y, x&y),所以第三个项对应索引2。 - 如果ANF表达式仅包含单个项(比如常数1或单个变量),
expr.args会是空元组,此时直接使用expr本身即可。
内容的提问来源于stack exchange,提问作者Aster
相关产品推荐
相关产品推荐

