🎒 Python集合:无序但超好用的"魔法袋"教程
欢迎您在底部评论区留言,一起交流~
✨ 提示:集合就像哆啦A梦的百宝袋——装东西快如闪电,还能自动去重!本篇带你解锁它的秘密~
1. 什么是集合?
集合(Set)是Python中的一种无序、不重复的数据容器,用
{}定义(但空集合要用set())。💡 冷知识:集合里甚至可以混装不同类型的数据!
2. 集合的6大特点 🧩
- 无序存储:没有下标索引,不能通过位置访问元素
- 元素唯一:自动去重,重复元素直接消失
- 类型混装:数字、字符串、元组都能装(但列表和字典不行!🚫)
- 动态可变:支持增删元素,大小灵活变化
- 支持循环:用
for遍历没问题
冷知识:因集合没有下标可索引,所以while循环无法使用!
- 高效运算:集合的交、并、差操作快到飞起
3. 集合的8大必会操作 ⚒️
① 添加元素 → add()
⚠️ 注意:如果添加已有元素,集合不会有变化
② 删除元素 → remove()
💥 报错预警:删除不存在的元素会触发KeyError
③ 随机弹出元素 → pop()
④ 清空集合 → clear()
⑤ 差集运算(difference()):谁是我的“专属粉丝”?
场景:
假设你有两个集合,一个是你的“粉丝列表”,另一个是“讨厌鬼列表”。你想知道哪些人是只喜欢你、但不在讨厌鬼名单上的“专属粉丝”。
语法:
效果:
返回一个新的集合,包含所有在
集合1 中但不在 集合2 中的元素。示例代码:
解读:
difference() 就像是你在对集合说:“嘿,集合1,看看集合2里有没有你的‘叛徒’,如果有,直接踢出去!”结果是一个全新的集合,里面只有那些忠诚于你的元素。💡 提醒:difference() 不会修改原来的集合,而是返回一个新集合。所以原集合里的元素还是“完整无缺”的。
⑥ 就地差集(difference_update()):直接动手清理门户!
场景:
如果你不仅想知道谁是“专属粉丝”,还希望直接从你的粉丝列表中删除那些讨厌鬼,那就需要用到
difference_update()。语法:
效果:
直接修改
集合1,移除所有出现在 集合2 中的元素。示例代码:
解读:
difference_update() 就像是你拿起扫帚,对着集合1大喊:“滚出去!凡是出现在集合2里的家伙,统统给我消失!”于是,集合1被当场“净化”了。⚠️ 注意:这个操作会直接修改原集合,没有回头路哦!如果你还想保留原始数据,记得先备份一份。
⑦ 并集运算(union()):团结就是力量!
场景:
假设你有两个集合,一个是“我的朋友”,另一个是“我朋友的朋友”。你想知道你们这群人加起来总共有多少个独特的人,就可以用到并集运算。
语法:
效果:
返回一个新的集合,包含两个集合中的所有元素,并自动去重。
示例代码:
解读:
union() 就像是你在组织一场派对,对着两个集合喊:“大家快来集合!不管你是哪一组的,只要没重复,就都算数!”最后的结果就是一个热闹非凡的大集合。💡 提醒:和difference()一样,union()也不会修改原来的集合,而是返回一个新集合。如果你想直接修改原集合,可以用其他方法(比如手动赋值)。
⑧ 统计元素数量 → len()
4. 避坑指南 🚧
坑1:用{}创建的是字典,不是空集合!
坑2:集合不能装可变类型!
5. 场景应用:快速去重!🚀
需求:从列表中删除重复元素
6. 总结表格 📌
操作 | 方法/函数 | 示例 | 效果说明 |
添加元素 | add(元素) | s.add(5) | 元素唯一,重复无效 |
删除元素 | remove(元素) | s.remove(5) | 元素不存在则报错 |
随机弹出元素 | pop() | s.pop() | 集合为空时报错 |
清空集合 | clear() | s.clear() | 变为空集合 set() |
差集 | difference() | s1.difference(s2) | 返回新集合 |
就地差集 | difference_update() | s1.difference_update(s2) | 直接修改s1 |
并集 | union() | s1.union(s2) | 返回新集合 |
统计元素数量 | len() | len(s) | 返回整数数量 |
8. 终极总结 🌟
- 核心口诀:集合无序又唯一,交并差运算超高效!
- 高频场景:数据去重、成员检测、数学运算
- 下期预告:集合的"兄弟"字典,如何用键值对玩转数据?
🚀 行动建议:打开Python,创建一个集合,把所有操作都试一遍!遇到问题?评论区见!💬
✨ 学会了吗?点个⭐️,下次学字典不迷路~
7. 练习题:哆啦A梦的百宝袋大冒险 🎒
哆啦A梦有一个神奇的百宝袋(集合),里面装满了各种道具。今天,他遇到了一个难题,需要你的帮助!
背景故事
- 哆啦A梦的百宝袋里有以下道具:
{"竹蜻蜓", "时光机", "任意门", "记忆面包", "缩小灯"}。
- 大雄偷偷拿走了以下道具:
{"竹蜻蜓", "记忆面包"}。
- 胖虎又强行塞进了一些新道具:
{"铜锣烧", "喇叭"}。
- 静香帮忙整理了所有道具,并发现有些道具重复了。
哆啦A梦想知道:
- 问题1:哪些道具是被大雄偷走后剩下的?(提示:用差集运算)
- 问题2:如果胖虎塞进来的道具直接加入百宝袋,最终百宝袋里有哪些道具?(提示:用并集运算)
- 问题3:假设哆啦A梦想清理掉所有静香不喜欢的道具(静香不喜欢:
{"喇叭", "缩小灯"}),清理后的百宝袋里还有哪些道具?(提示:用就地差集)
代码框架
以下是部分代码框架,请补全缺失的部分:
答案 🧩
预期输出
运行代码后,你将得到以下结果(顺序可能随机):
- 问题1答案:
{'时光机', '任意门', '缩小灯'}
- 问题2答案:
{'时光机', '任意门', '缩小灯', '铜锣烧', '喇叭'}
- 问题3答案:
{'时光机', '任意门', '铜锣烧'}
额外挑战:扩展问题
如果你已经完成了上述练习,可以尝试解决以下扩展问题:
- 如果哆啦A梦的百宝袋最初是空的(
set()),依次执行以下操作: - 添加
"竹蜻蜓"和"时光机"; - 删除
"竹蜻蜓"; - 随机弹出一个元素(使用
pop())。 最终百宝袋里可能剩下什么?
- 使用列表
["铜锣烧", "铜锣烧", "喇叭", "喇叭", "时光机"]创建一个集合,观察去重后的结果。
希望这个练习题既有趣又能帮助你巩固集合的操作!完成后可以在评论区分享你的答案哦~ 😊
- 作者:神秘人
- 链接:https://blog.tianjiaji.top//url/19f183c0-6139-8085-a6fe-faa9d0dd5577
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。










