当前位置:首页>python>自动去重神器:Python集合(Set)的定义与操作

自动去重神器:Python集合(Set)的定义与操作

  • 2026-09-26 20:24:39
自动去重神器:Python集合(Set)的定义与操作
👋 大家好,欢迎来到「Python从入门到精通」系列!
在前面的文章中,我们学习了列表(List)和元组(Tuple),它们都允许保存重复的数据,比如一个班级的成绩单里可能有多个 100 分。
但有时候,我们只关心 “有哪些不同的元素” ,而不关心它们出现的次数或顺序。
比如:统计下单的 不同用户 (不管他买了几次)。
比如:找出两个群聊里 共同的群友 。
这时候,如果你还用列表去循环判断,那就太麻烦了。Python 给你提供了一个自带“洁癖”属性的数据结构—— 集合(Set) 。
它最大的特点就是: 无序 且 不重复 。

01

什么是集合 (Set)?
如果你数学还不错,这玩意儿就是数学课本里那个由花括号 {} 包裹的集合。
✅ 定义集合
集合也是用花括号 {} 表示,元素之间用逗号隔开。
# 定义一个普通集合fruits = {"apple", "banana", "orange"}print(fruits)# 输出可能顺序不一样,因为集合是无序的!
✨ 自动去重特性
这是集合最常用的功能!当你把一堆数据丢进集合,重复的元素会自动消失。
# 列表里有很多重复的 1nums_list = [1, 2, 2, 1, 3, 1]# 转换成集合,瞬间去重nums_set = set(nums_list)print(nums_set) # 输出: {1, 2, 3}
⚠️ 经典大坑:定义空集合
如果你想定义一个空的集合, 千万不要 像列表 [] 或元组 () 那样直接写 {} 。
{} 在 Python 中默认表示 空字典(Dict) ,而不是空集合!
定义空集合必须使用 set() 工厂函数。
# ❌ 错误写法s1 = {}print(type(s1))  # <class 'dict'> (这是字典!)# ✅ 正确写法s2 = set()print(type(s2))  # <class 'set'>

02

集合的增删改查
注意:因为集合是 无序 的,所以它 不支持索引 !你不能说“我要取第 1 个元素” ( s[0] 会报错)。
➕ 添加元素
s = {"A", "B"}# add(): 添加单个元素s.add("C")# update(): 批量添加(传入一个列表或元组)s.update(["D", "E"])print(s) # {'A', 'B', 'C', 'D', 'E'}
➖ 删除元素
s = {"A", "B", "C"}# remove(): 删除指定元素,如果不存在会报错s.remove("A")# discard(): 删除指定元素,如果不存在也不报错(推荐)s.discard("Z") # pop(): 随机弹出一个元素(慎用,因为你不知道会删掉谁)s.pop() 
🔍 快速查找
集合的底层结构(哈希表)决定了它的查找速度极快,比列表快得多!
# 判断是否存在,速度秒杀列表if "Apple" in fruits:    print("有苹果!")

03

集合的高级玩法:交、并、差
这部分完全对应数学里的集合运算,处理数据对比时简直是神技。
假设有两个学霸的选课名单:
class_a = {"数学", "英语", "物理"}class_b = {"数学", "化学", "生物"}
  • 交集 ( & 或 intersection ) 找出 两边都有 的课。
print(class_a & class_b)# 输出: {'数学'}
  • 并集 ( | 或 union ) 找出 所有的课 (自动去重)。
print(class_a | class_b)# 输出: {'数学', '英语', '物理', '化学', '生物'}
  • 差集 ( - 或 difference ) 找出 A班独有 的课(A有B没有)。
print(class_a - class_b)# 输出: {'英语', '物理'}
  • 对称差集 ( ^ 或 symmetric_difference ) 找出 大家不共用 的课(互相没有的)。
print(class_a ^ class_b)# 输出: {'英语', '物理', '化学', '生物'}

04

什么时候该用集合?
  • 去重 :当你拿到一堆乱七八糟重复的数据,想立刻清洗干净时。
  • 关系测试 :当且仅当你需要做交集、并集等逻辑判断时。
  • 高频查找 :当你需要频繁判断 if x in data ,且数据量很大时,用集合比用列表快几百倍。

05

📝 总结
特性列表 List元组 Tuple集合 Set符号[](){}有序性有序有序无序重复性允许允许不允许用途通用存储固定配置去重、数学运算
今天的分享就到这里!学会了集合,你就拥有了数据清洗的第一把“刷子”。
👇 觉得有用的话,点个【在看】支持一下吧!

最新文章

随机文章