python代码,如何计算两个set的并集差集交集补集?
发布于 作者:苏南大叔 来源:程序如此灵动~
在以前的文章中,苏南大叔写过一篇set和list区别的文章(链接见文末)。大家已经知道:set集合具有天然去重的特性,集合内部没有顺序。那么,本文的需求是:计算两个set集合的并集、差集、交集、补集。

大家好,这里是苏南大叔的程序如此灵动博客,这里记录苏南大叔和计算机代码的故事。本文描述set集合的基本操作,求交集差集并集补集。本文测试环境:win10,python@3.6.8。值得特别说明的是:本文中的这些set运算结果,仍然是set。那么,set中的特性就是:元素无数序,所以最终结果中对于可能奇怪的顺序不要奇怪。
基本定义
set集合的获得,定义的方式可以有:
- 可以直接定义。
- 也可以由
list进行转化得到。
那么,本文的测试数据,由下面代码得到:
set1 = {1,3,5,7,9,"苏南大叔","苏南大叔"}
set2 = set([2,3,4,5,"sunan","sunan"])注意:因为set天然去重,所以这里存在着重复数据被合并的风险。所以,大家可以看到上面的数据中,代码中的数据和最后的结果,是由一定的差异的。

并集,差集
并集就是两者联合结果,测试代码是:
print("并集:", set1|set2)
print("并集:", set1.union(set2))
差集是由主次关系的,所以请注意运算符左右变量顺序。A-B就是:在A中但不在B中。
print("差集:", set1-set2)
print("差集:", set1.difference(set2))
print("差集:", set2-set1)
print("差集:", set2.difference(set1))交集,补集
交集就是两者所共有的部分,测试代码是:
print("交集:", set1&set2)
print("交集:", set1.intersection(set2))intersection翻译出来是“十字路口”的意思。
补集就是所有的数据中,除去交集的内容。
print("补集:", set1^set2)
print("补集:", set1.symmetric_difference(set2))symmetric翻译出来是“对称的”的意思。相关链接
总结
本文以set的定义为起点,着重求解了两个set的并集差集交集补集。每个操作都有符号方式和代码方式两种写法。
| 类型 | 说明 | 操作符 | 方法 |
|---|---|---|---|
| 并集 | 两者之合 | 竖线 | .union() |
| 差集 | 前者有后者没有 | - | .difference() |
| 交集 | 两者共同部分 | & | .intersection() |
| 补集 | 合集减去交集 | ^ | .symmetric_difference() |
更多python经验文章,请点击苏南大叔的博客文章: