首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python自学11 - 常用数据结构之集合(set)

Python自学11 - 常用数据结构之集合(set)

原创
作者头像
星哥玩云
发布2025-09-04 11:43:34
发布2025-09-04 11:43:34
11500
代码可运行
举报
文章被收录于专栏:python自学成菜python自学成菜
运行总次数:0
代码可运行

Python自学11 - 常用数据结构之集合(set)

在 Python 的常用数据结构中,集合(set) 是一个非常实用但常被忽略的类型。它不仅能去重,还能高效地进行集合运算(交集、并集、差集等),在数据清洗、去重统计、快速查找等场景中非常有用。

本文将从 定义 → 特性 → 常用操作 → 实战案例 四个方面带你掌握集合的核心用法。

集合的定义与特性

定义方式

代码语言:javascript
代码运行次数:0
运行
复制
# 使用花括号
fruits = {"apple", "banana", "orange"}
​
# 使用 set() 构造函数
numbers = set([1, 2, 3, 3, 2])  # 自动去重
print(numbers)  # {1, 2, 3}

特性

  • 无序:集合中的元素没有固定顺序,不能通过索引访问。
  • 唯一性:集合会自动去重。
  • 可变性:集合本身可变,但元素必须是不可变类型(如数字、字符串、元组)。

Python 程序中的集合跟数学上的集合没有什么本质区别,需要强调的是上面所说的无序性和互异性。无序性说明集合中的元素并不像列中的元素那样存在某种次序,可以通过索引运算就能访问任意元素,集合并不支持索引运算

另外,集合的互异性决定了集合中不能有重复元素,这一点也是集合区别于列表的地方,我们无法将重复的元素添加到一个集合中。集合类型必然是支持innot in成员运算的,这样就可以确定一个元素是否属于集合,也就是上面所说的集合的确定性。

集合的成员运算在性能上要优于列表的成员运算,这是集合的底层存储特性决定的,此处我们暂时不做讨论,大家记住这个结论即可。

常用操作

添加与删除元素

代码语言:javascript
代码运行次数:0
运行
复制
s = {1, 2, 3}
s.add(4)           # 添加单个元素
s.update([5, 6])   # 添加多个元素
s.remove(2)        # 删除元素(不存在会报错)
s.discard(10)      # 删除元素(不存在不会报错)
s.clear()          # 清空集合

集合运算

代码语言:javascript
代码运行次数:0
运行
复制
A = {1, 2, 3, 4}
B = {3, 4, 5, 6}
​
print(A | B)   # 并集 {1, 2, 3, 4, 5, 6}
print(A & B)   # 交集 {3, 4}
print(A - B)   # 差集 {1, 2}
print(A ^ B)   # 对称差集 {1, 2, 5, 6}

判断关系

代码语言:javascript
代码运行次数:0
运行
复制
A = {1, 2}
B = {1, 2, 3}
​
print(A.issubset(B))   # True  子集
print(B.issuperset(A)) # True  超集
print(A.isdisjoint({4, 5})) # True 无交集

集合推导式

集合推导式与列表推导式类似,但用 {} 包裹:

代码语言:javascript
代码运行次数:0
运行
复制
squares = {x**2 for x in range(6)}
print(squares)  # {0, 1, 4, 9, 16, 25}

实战案例

案例1:列表去重并排序

代码语言:javascript
代码运行次数:0
运行
复制
data = [5, 3, 1, 2, 3, 5, 1]
unique_sorted = sorted(set(data))
print(unique_sorted)  # [1, 2, 3, 5]

案例2:快速查找公共好友

代码语言:javascript
代码运行次数:0
运行
复制
user1_friends = {"Tom", "Jerry", "Alice"}
user2_friends = {"Alice", "Bob", "Tom"}
​
common = user1_friends & user2_friends
print(common)  # {'Tom', 'Alice'}

案例3:文本去重统计

代码语言:javascript
代码运行次数:0
运行
复制
text = "python java python c++ java go"
words = text.split()
unique_words = set(words)
print(f"去重后单词数: {len(unique_words)}")  # 4

小结

集合是Python中非常强大的数据结构,具有去重、成员检查、集合运算等功能。它广泛应用于实际开发中,尤其是在需要高效处理数据、去重、集合运算等场景下。掌握集合的基本操作和应用,可以帮助我们更好地解决一些复杂问题。

特性

说明

无序

元素没有固定顺序

唯一性

自动去重

可变性

可添加/删除元素

高效查找

判断元素是否存在的速度快

适用场景

  • 数据去重
  • 快速查找
  • 集合运算(交集、并集、差集)
  • 数据关系判断(子集、超集、无交集)

💡 星哥建议: 在处理需要去重、快速查找或集合运算的任务时,优先考虑 set,不仅代码简洁,还能显著提升性能。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Python自学11 - 常用数据结构之集合(set)
    • 集合的定义与特性
      • 定义方式
      • 特性
    • 常用操作
      • 添加与删除元素
      • 集合运算
      • 判断关系
    • 集合推导式
    • 实战案例
      • 案例1:列表去重并排序
      • 案例2:快速查找公共好友
      • 案例3:文本去重统计
    • 小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档