作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在学习离散数学类(class),我正在尝试复制德摩根定律
Complement(B union C) = Complement(B) intersect Complement(C).
我尝试搜索 Python 对集合执行补集的能力,但我没有找到太多(如果有的话)。
所以我只是在 IDLE 中尝试了这个。这看起来正确吗?
U = {'pink', 'purple', 'red', 'blue', 'gray', 'orange', 'green', 'yellow', 'indigo', 'violet'}
A = {'purple', 'red', 'orange', 'yellow', 'violet'}
B = {'blue', 'gray', 'orange', 'green'}
C = {'pink', 'red','blue','violet'}
Comp_B = U - B
Comp_C = U - C
Comp_Union_BC = Comp_B.intersection(Comp_C)
print(Comp_Union_BC)
最佳答案
集合的补集是集合中不的所有内容,而是“通用集合”的一部分。没有通用集的定义,您就无法真正给出集的补集的标准库定义。
此外,Python set
类型处理离散对象的集合,而不是可以无限大的数学构造,例如所有自然数。所以 Python 不支持单一通用集的一般、模糊和无限的想法。
对于特定领域,如果您可以用离散术语定义通用集,只需定义您自己的 complement()
可调用对象即可。例如,给定通用集 U 的全局定义,您可以将集合 a
的补集定义为 U 与设置:
U = {'pink', 'purple', 'red', 'blue', 'gray', 'orange', 'green', 'yellow', 'indigo', 'violet'}
def complement(a):
# difference between a global universal set U and the given set a
return U - a
或者,更简单:
complement = U.difference
然后只需将一个集合传递给 complement()
来检验假设:
>>> # set | set == set union, set & set == set intersection
...
>>> complement(B | C) == complement(B) & complement(C)
True
是的,您的解释是正确的,U - B
产生 B
的补码。
关于Python 集合运算——集合的补并集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50358409/
补: Rest 风格请求处理的的内容补充(1) Rest风格请求:注意事项和细节 客户端是PostMan 可以直接发送Put,delete等方式请求,可不设置Filter 如果哟啊
我是一名优秀的程序员,十分优秀!