![](/img/trans.png)
[英]Python set Union and set Intersection operate differently?
[英]How to simplify set expressions with union, intersection, and negation, in python
是否有任何内置的 python 库可用于生成简化的集合表达式?
例如,假设我们有一个集合表达式(A∩B)U(A∩C)
。 这可以简化为A∩(BUC)
。
类似地(A∩B)U(A∩!B)
可以简化为A
。
我希望在 python 中实现这个逻辑。 我发现sympy
可以用来简化像x**2 + 2*x + 1
这样的代数表达式,但我不确定它是否能处理集合表达式。
是的。 集合表达式等价于 boolean 表达式,而sympy
可以简化这些.
你的例子:
(A∩B)U(A∩C)
等价于(a & b) | (a & c)
(a & b) | (a & c)
,(A∩B)U(A∩!B)
等价于(a & b) | (a & ~b)
(a & b) | (a & ~b)
,from sympy import *
a, b, c = symbols('a, b, c')
expr = (a & b) | (a & c)
simplify_logic(expr) # produces: a∧(b∨c)
expr = (a & b) | (a & ~b)
simplify_logic(expr) # produces: a
可以在此处找到其他一些示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.