Python 中的集合运算符是一些特殊的符号和函数,允许你在集合上执行各种操作,例如并集、交集、差集和对称差集。这些运算符提供了一种组合、比较和修改集合的方式。
Python 实现了以下集合运算符 −
Python 集合并集运算符 (|)
两个集合的并集是一个包含 A 或 B 或两者中所有不同元素的集合。例如,
{1,2} ∪ {2,3} = {1,2,3} 下图说明了两个集合的并集。
并集示例
在 Python 中,你可以使用 union() 函数或 | 运算符来执行并集操作。这个操作结合了两个集合的元素,同时消除重复项,最终得到一个新的包含两个集合所有唯一元素的集合。
示例
下面的例子使用 "|" 运算符和 union() 函数,并返回两个集合的并集:
set1 = {1, 2, 3}
set2 = {3, 4, 5}
set3 = {6, 8, 9}
set4 = {9, 45, 73}
union_set1 = set1.union(set2)
union_set2 = set3 | set4
print('The union of set1 and set2 is', union_set1)
print('The union of set3 and set4 is', union_set2)
执行上述代码后,我们得到如下输出:
The union of set1 and set2 is {1, 2, 3, 4, 5}
The union of set3 and set4 is {73, 6, 8, 9, 45}
Python 集合交集运算符 (&)
两个集合 AA 和 BB 的交集由所有在 A 和 B 中共有的元素组成,记为 A∩B。例如,
{1,2} ∩ {2,3} = {2} 下图说明了两个集合的交集。
交集示例
Python 提供了 intersection() 函数或 & 运算符来执行这个操作。结果集合只包含两个集合中都存在的元素。
示例
下面的例子使用 & 运算符和 intersection() 函数,并返回两个集合的交集:
set1 = {1, 2, 3}
set2 = {3, 4, 5}
set3 = {6, 8, 9}
set4 = {9, 8, 73}
intersection_set1 = set1.intersection(set2)
intersection_set2 = set3 & set4
print('The intersection of set1 and set2 is', intersection_set1)
print('The intersection of set3 and set4 is', intersection_set2)
它将产生以下输出:
The intersection of set1 and set2 is {3}
The intersection of set3 and set4 is {8, 9}
Python 集合差集运算符 (-)
两个集合之间的差集(减法)由出现在第一个集合但不出现在第二个集合中的元素组成。定义如下:集合 A−B 包含那些在 A 中但不在 B 中的元素。例如,
如果 A={1,2,3} 且 B={3,5},那么 A−B={1,2} 下图说明了两个集合的差集。
差集示例
Python 提供了 difference() 函数或 - 运算符来执行这个操作。结果集合包含仅属于第一个集合的元素。
示例
下面的例子使用 "-" 运算符和 difference() 函数,并返回两个集合的差集:
set1 = {1, 2, 3}
set2 = {3, 4, 5}
set3 = {6, 8, 9}
set4 = {9, 8, 73}
difference_set1 = set1.difference(set2)
difference_set2 = set3 - set4
print('The difference between set1 and set2 is', difference_set1)
print('The difference between set3 and set4 is', difference_set2)
我们得到如下输出:
The difference between set1 and set2 is {1, 2}
The difference between set3 and set4 is {6}
注意 "s1-s2" 并不等同于 "s2-s1"。
Python 集合对称差运算符 (^)
两个集合的对称差是由存在于任一集合但不存在于两个集合中的元素组成的。A 和 B 的对称差记为 "A Δ B",定义如下:
A Δ B = (A − B) ∪ (B − A) 如果 A = {1, 2, 3, 4, 5, 6, 7, 8} 且 B = {1, 3, 5, 6, 7, 8, 9},那么 A Δ B = {2, 4, 9}。
下图说明了两个集合之间的对称差。
对称差示例
Python 提供了 symmetric_difference() 函数或 ^ 运算符来执行这个操作。结果集合包含每个集合中独有的元素。
示例
下面的例子使用 "^" 运算符和 symmetric_difference() 函数,并返回两个集合的对称差:
set1 = {1, 2, 3}
set2 = {3, 4, 5}
set3 = {6, 8, 9}
set4 = {9, 8, 73}
symmetric_difference_set1 = set1.symmetric_difference(set2)
symmetric_difference_set2 = set3 ^ set4
print('The symmetric difference of set1 and set2 is', symmetric_difference_set1)
print('The symmetric difference of set3 and set4 is', symmetric_difference_set2)
产生的结果如下:
The symmetric difference of set1 and set2 is {1, 2, 4, 5}
The symmetric difference of set3 and set4 is {73, 6}
Python 集合子集测试操作
你可以使用 issubset() 函数或 <= 运算符检查一个集合是否是另一个集合的子集。如果集合 A 中的所有元素也都存在于 B 中,则认为集合 A 是集合 B 的子集。
示例
下面的例子使用 "<=" 运算符和 issubset() 函数,并返回两个集合的子集测试:
set1 = {1, 2}
set2 = {1, 2, 3, 4}
set3 = {64, 47, 245, 48}
set4 = {64, 47, 3}
is_subset1 = set1.issubset(set2)
is_subset2 = set3 <= set4
print('set1 is a subset of set2:', is_subset1)
print('set3 is a subset of set4:', is_subset2)
产生的结果如下:
set1 is a subset of set2: True
set3 is a subset of set4: False