【Python入门教程】第46篇 集合的交集

本篇将会介绍集合的交集操作,交集包含了两个集合中的共同元素。

集合的交集

在 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 的交集运算:
Python Set Intersection Example

集合的交集有很多实用的场景。例如,我们可以使用交集查找社交网络应用中两个好友的共同爱好,或者查找 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() 方法和交集运算符(&)获取两个或多个集合的交集。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不剪发的Tony老师

为 5 个 C 币而折腰。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值