大家好,我是正在实战各种AI项目的程序员晚枫。
今天聊一个Python中经常被忽视的数据结构——集合(set)。
很多人学Python时跳过了它,觉得用列表就够了。但你知道吗?集合的去重功能,一行代码就能搞定,而且速度飞快!
看完这篇文章,你会发现新大陆。
什么是集合?
想象你面前有一堆混在一起的球,有红的有蓝的有绿的,有的重复了:
1 | 红球、红球、蓝球、绿球、绿球、绿球、红球 |
现在你把它们倒进一个箱子里,摇一摇——拿出来时,每种颜色的球只出现一次。
这就是集合:会自动去重、没有顺序、只存唯一值。
创建集合
1 | # 方式1:花括号(和字典一样,但存的是值,不是键值对) |
⚠️ 注意:
{}是空字典,不是空集合!空集合要用set()
1 | empty_set = set() # ✅ 正确:空集合 |
最常用功能:一键去重
假设你有一个列表,里面有重复的名字,要去掉重复的:
场景:去掉重复的客户名单
1 | # 有重复的客户名单 |
运行结果:
1 | 原始列表(7人):['张三', '李四', '王五', '张三', '赵六', '李四', '钱七'] |
💡 为什么用集合? 集合内部用哈希表实现,查找速度比列表快得多。数据量大时,优势明显。
集合的关系运算(超实用)
集合最强大的功能是关系运算,处理"谁和谁有交集"这类问题特别方便。
场景:找出两个班级的共同好友
1 | # Alice 的好友列表 |
运行结果:
1 | 共同好友:{'Eve', 'Charlie'} |
运算符对照表
| 运算符 | 方法 | 含义 | 记忆方式 |
|---|---|---|---|
& | intersection() | 交集(共同元素) | 两个都要 |
| | union() | 并集(所有元素) | 合在一起 |
- | difference() | 差集(在A不在B) | A减掉B |
^ | symmetric_difference() | 对称差集(不共有) | 去掉共同的 |
实战案例:销售数据分析
假设你有两个销售文件,想快速分析客户重叠情况:
1 | # 从文件A读取的客户ID |
运行结果:
1 | 两个文件都有的客户:{1004, 1005} |
集合的其他操作
添加和删除元素
1 | s = {1, 2, 3} |
判断子集/超集
1 | a = {1, 2, 3} |
什么时候用集合?
✅ 适合用集合的场景
- 需要去重 → 一行搞定
- 判断成员是否存在 → 比列表快100倍!
- 求交集、并集、差集 → 直接用运算符
- 需要确保元素唯一性 → 自动去重
❌ 不适合用集合的场景
- 需要保持顺序 → 集合无序
- 需要通过索引访问 → 集合没有索引
- 需要存可变对象 → 列表不能放集合里
📚 推荐:Python 零基础实战营
系统学习Python,推荐这个免费入门课程 👇
| 特点 | 说明 |
|---|---|
| 🎯 专为0基础设计 | 门槛低,上手快 |
| 📹 配套视频讲解 | 配合文章学习效果更好 |
| 💬 专属答疑群 | 遇到问题有人带 |
| 🎁 实体书赠送 | 优秀学员送《Python编程从入门到实践》 |
本讲小结
| 操作 | 代码 | 说明 |
|---|---|---|
| 创建集合 | {1, 2, 3} 或 set([1,2,3]) | 花括号或set函数 |
| 去重 | list(set(data)) | 一行代码搞定 |
| 交集 | a & b | 共同的元素 |
| 并集 | a | b | 所有元素合并 |
| 差集 | a - b | 在a里不在b里 |
| 添加 | s.add(x) | 加一个元素 |
| 删除 | s.remove(x) | 删除指定元素 |
💡 记住一句话:要去重?用 set!要做关系运算?用 set!
下节预告
学会了集合,下一篇来学装饰器——给函数加功能的"黑魔法"。
课程导航
下一篇: Python函数参数*args和**kwargs详解
下一篇: Python装饰器:给函数加功能的黑魔法
PS:集合是Python最被低估的数据结构之一。记住:要去重用set,要快用set,要做关系运算还是用set!
