摘要:在本节中,你将了解 Python 中的集合交集,以及如何使用它来求两个或多个集合的交集。
省流总结
在 Python 中,你可以使用集合intersection()
方法或集合交集运算符(&
)来求两个或多个集合的交集:
new_set = set1.intersection(set2, set3)
new_set = set1 & set2 & set3
intersection()
方法&
运算符的性能是相同的。
Python集合交集简介
当对两个或多个集合求交集时,你会得到一个新的集合,该集合由存在于所有这些集合中的元素组成。
假设你有如下两个集s1
、s2
:
s1 = {'Python', 'Java','C++'}
s2 = {'C#', 'Java', 'C++' }
这两个集合的交集会返回一个新的集合,该集合包含两个元Java
、C++
:
s = {'Java', 'C++'}
……因为它们是仅有的同时存在于这两个集合中的元素。
下面的维恩图展示了两个集合 s1
和 s2
的交集:
集合的交集有许多实用的应用场景。
例如,你可以使用集合交集在社交网络应用程序中找出两个朋友共同的喜好,或者在人力资源应用程序中搜索两名或更多员工的共同技能。
在 Python 中,你可以使用集合intersection()
方法或集合交集运算符(&
)来求两个或多个集合的交集。
使用集合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'}
集合intersection()
方法与集合交集运算符(&
)的比较
集合交集运算符只允许操作数是集合,而集合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'
总结
两个或多个集合的交集会返回存在于所有这些集合中的元素。
使
intersection()
方法或集合交集运算符(&
)来求两个或多个集合的交集。