当前位置:首页>python>Python零基础第23讲——集合

Python零基础第23讲——集合

  • 2026-09-29 13:26:30
Python零基础第23讲——集合

导语:设想这样一个场景:你手头有一份 1000 人的抽奖名单,但因为系统故障,里面有很多重复的名字。老板让你十分钟内把**“实际参与抽奖的独立人数”**整理出来。 如果你用列表配合 for 循环挨个比对,不仅代码写得长,运行还慢。

这时候,就轮到 Python 数据结构家族里最低调,但在关键时刻最能打的“去重神器”出场了——它就是集合(Set)。今天,我们就来解锁集合的超能力!


一、 什么是集合(Set)?

💡 核心概念:集合 = 天生自带“去重”光环的容器

集合和我们在初中数学里学过的集合概念一模一样。它有两个最核心的特点:

  1. 绝对唯一:集合里绝对不允许出现重复的元素。任何重复的数据丢进去,都会被瞬间“吞”掉,只保留一份。

  2. 无序排布:集合里的元素是没有顺序的(所以你不能像列表那样用 [0]、[1] 这种下标去强行抓取它)。


二、 如何“召唤”一个集合?

创建集合通常有两种姿势,让我们来看看这台“去重碎纸机”是怎么工作的。

姿势 1:使用大括号 {}虽然字典也用大括号,但字典是 key: value 成对出现的,而集合里面只是一堆单独的数据。

# 故意放入重复的 4 和 2s1 = {1, 2, 3, 4, 4, 2}print(s1)

运行结果:

{1, 2, 3, 4}(看!多余的 4 和 2 瞬间人间蒸发,只留下独苗。)

姿势 2:使用 set() 魔法函数这是最常用的招式,你可以把一个充满重复数据的列表,直接扔进 set() 里进行“洗礼”。

# 这是一个有重复元素的列表my_list = [10, 20, 20, 30]s2 = set(my_list)print(s2)

运行结果:

{10, 20, 30}


三、 集合的“特异功能”:高阶数学运算

如果集合只会去重,那它还不够强大。集合最牛的地方在于,它完美支持数学里的集合运算!只需一行代码,就能解决极其复杂的业务逻辑。

假设我们有两个兴趣小组的名单:

a = {1, 2, 3}  # 喜欢打篮球的同学编号b = {2, 3, 4}  # 喜欢踢足球的同学编号

1. 找共同好友:交集(Intersection)想知道谁既喜欢篮球又喜欢足球?用 & 符号!

print("交集:", a & b)# 或者使用:a.intersection(b)

输出:交集: {2, 3}

2. 找所有人:并集(Union)想知道两个兴趣小组一共有哪些人(去重后)?用 |(管道符)!

print("并集:", a | b)# 或者使用:a.union(b)

输出:并集: {1, 2, 3, 4}

3. 找特立独行的人:差集(Difference)想知道谁只喜欢打篮球,不喜欢踢足球?用减号 -!

print("差集:", a - b)# 或者使用:a.difference(b)

输出:差集: {1}(解释:从 a 中踢掉那些同时也在 b 里的元素)


四、 集合的黄金应用场景

学了这么多,集合在实际开发中到底能干嘛?

  • 🧹 极速数据去重:处理爬虫抓取的海量数据、清洗用户注册邮箱、合并多份成绩单。

  • 📊 统计唯一种类:一篇文章用了多少个不同的汉字?把它转成 set,然后 len() 一下秒出结果。

  • 🏷️ 标签与权限管理:判断用户是否拥有某项权限(交集),或者给商品打上互不重复的推荐标签(并集)。

  • ⚙️ 复杂数据建模:与之前学的字典(Dict)强强联手,构建更高效的检索系统。


五、 本讲核心心法总结

  • 🛡️ 唯一性:集合天生过滤重复项,是数据清洗的最佳搭档。

  • 🛠️ 操作符:牢记 &(交)、|(并)、-(差)三大神器,代码量省 90%。

  • ⚡ 高效率:集合在底层的查找速度极快,性能远超列表。

核心口诀:集合 = 唯一元素 + 极速运算 + 业务逻辑

我为你整理了一套《Python零基础保姆级教程》,这不只是干巴巴的理论,而是包含:

✅ 完整版 Python 零基础到精通完整代码

✅ 完整注释讲解,一键运行

👇 获取方式:

想要解锁 [Python保姆级教程] 的同学,可以点击下方赞赏支持博主,并在后台留言

最新文章

随机文章