本篇将会介绍集合的交集操作,交集包含了两个集合中的共同元素。
集合的交集
在 Python 中,我们可以使用集合的 intersection() 方法或者交集操作符(&)返回两个或多个集合的交集:
new_set = set1.intersection(set2, set3)
new_set = set1 & set2 & set3
两个或多个集合的交集结果包含了它们的共同元素。以下是两个集合 s1 和 s2:
s1 = {'Python', 'Java','C++'}
s2 = {'C#', 'Java', 'C++' }
这两个集合的交集结果是一个新的集合,包含了元素“Java”和“C++”:
s = {'Java', 'C++'}
以下文氏图解释了集合 s1 和 s2 的交集运算:
集合的交集有很多实用的场景。例如,我们可以使用交集查找社交网络应用中两个好友的共同爱好,或者查找 HR 系统中两个员工的共同技能。
intersection() 方法
使用 intersection() 方法获取两个或多个集合的并集语法如下:
new_set = set1.intersection(set2, set3, ...)
以下示例使用 intersection() 方法对集合 s1 和 s2 执行交集运算:
s1 = {'Python', 'Java', 'C++'}
s2 = {'C#', 'Java', 'C++'}
s = s1.intersection(s2)
print(s)
输出结果如下:
{'C++', 'Java'}
交集操作符
Python 提供了交集运算符(&),也可以用于返回两个或多个集合的交集:
new_set = s1 & s2 & s3 & ...
以下示例使用交集操作符返回集合 s1 和 s2 的交集:
s1 = {'Python', 'Java', 'C++'}
s2 = {'C#', 'Java', 'C++'}
s = s1 & s2
print(s)
输出结果如下:
{'C++', 'Java'}
以下示例返回了多个集合的交集:
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s2 = {3, 4, 5}
s = s1 & s2 & s3
print(s)
输出结果如下:
{3}
两种方法比较
交集操作符只支持集合对象,intersection() 方法可以支持任何可遍历对象,包括字符串、列表以及字典等。
如果我们将非集合的可遍历对象传递给 intersection() 方法,它会将其转换为集合之后再进行交集操作。但是,如果我们将非集合的可遍历对象传递给交集操作符,将会返回一个错误。
以下示例使用 intersection() 方法返回一个集合与一个列表的交集:
numbers = {1, 2, 3}
scores = [2, 3, 4]
numbers = numbers.intersection(scores)
print(numbers)
输出结果如下:
{2, 3}
如果我们在以上示例中使用交集运算符,将会返回一个错误:
numbers = {1, 2, 3}
scores = [2, 3, 4]
numbers = numbers & scores
print(numbers)
输出结果如下:
TypeError: unsupported operand type(s) for &: 'set' and 'list'
总结
- 两个或多个集合的交集结果包含了它们的共同元素。
- Python 提供了 intersection() 方法和交集运算符(&)获取两个或多个集合的交集。