四、集合(Set)学习笔记
2026-02-19
Python基础
type
Post
status
Published
date
Feb 19, 2026
slug
python-data-structures-set-notes-4
summary
Python 中重要的数据容器之一——集合(Set)。集合是无序、不重复的数据集合,提供了高效的成员检测和集合运算功能。
tags
Python数据存储容器
category
Python基础
icon
password
今天学习集合,它的特点是无序和不重复,特别适合用来去重和做集合运算!
一、什么是集合?
1.1 我的理解
集合就是无序、不重复的数据集合,用花括号
{} 表示。和数学里的集合概念一样,可以进行并集、交集、差集等运算。1.2 为什么要用集合?
问题:列表去重太麻烦,而且查找元素很慢
集合的优势:
- 自动去重:不用写循环判断
- 查找超快:成员检测时间复杂度 O(1)
- 集合运算:支持并集、交集、差集等数学运算
二、集合的特点
2.1 特点总结
特点 | 说明 | 注意点 |
无序 | 元素没有固定顺序 | 不能通过索引访问 |
不重复 | 自动去重 | {1, 1, 2} 实际为 {1, 2} |
可变 | 可以添加、删除元素 | 支持 add()、remove() 等 |
元素必须可哈希 | 只能存不可变类型 | 不能存列表、字典 |
2.2 集合 vs 列表 vs 元组
特性 | 集合 (Set) | 列表 (List) | 元组 (Tuple) |
语法 | {1, 2, 3} | [1, 2, 3] | (1, 2, 3) |
有序性 | 无序 | 有序 | 有序 |
可重复性 | 不重复 | 可重复 | 可重复 |
索引访问 | ❌ 不支持 | ✅ 支持 | ✅ 支持 |
成员检测 | O(1) 极快 | O(n) 慢 | O(n) 慢 |
我的理解:
- 需要去重用集合
- 需要顺序用列表
- 数据固定用元组
2.3 集合的内存结构
集合内存结构示意图:
三、创建集合
3.1 花括号创建(最常用)
3.2 set() 函数创建
3.3 创建集合的注意事项
四、集合的基本操作
4.1 添加元素
4.2 删除元素
4.3 成员检测
五、集合常用方法总结
5.1 集合(set)中的常见方法
方法 | 说明 | 示例 | 返回值 |
add(x) | 添加元素 x 到集合 | s.add(1) | None |
update(iterable) | 添加可迭代对象中的所有元素 | s.update([1, 2, 3]) | None |
remove(x) | 删除元素 x,不存在则报错 | s.remove(1) | None |
discard(x) | 删除元素 x,不存在不报错 | s.discard(1) | None |
pop() | 随机删除并返回一个元素 | s.pop() | 被删除的元素 |
clear() | 清空集合中的所有元素 | s.clear() | None |
copy() | 返回集合的浅拷贝 | s.copy() | 新集合 |
len(s) | 返回集合中元素的个数 | len(s) | 整数 |
5.2 集合运算方法
方法 | 运算符 | 说明 |
union() | \| | 并集 |
intersection() | & | 交集 |
difference() | - | 差集 |
symmetric_difference() | ^ | 对称差集 |
issubset() | <= | 是否为子集 |
issuperset() | >= | 是否为超集 |
isdisjoint() | - | 是否不相交 |
六、集合运算
6.1 并集(Union)
并集:包含两个集合中所有不重复的元素。
6.2 交集(Intersection)
交集:包含同时存在于两个集合中的元素。
6.3 差集(Difference)
差集:包含在第一个集合中但不在第二个集合中的元素。
6.4 对称差集(Symmetric Difference)
对称差集:包含只存在于其中一个集合中的元素(不同时存在于两个集合)。
6.5 集合关系判断
七、集合推导式
7.1 基本语法
7.2 带条件的集合推导式
八、实际应用案例
8.1 数据去重
8.2 共同好友查找
8.3 敏感词过滤
8.4 标签系统
8.5 学生选课分析
九、遇到的问题和解决
问题1:用 {} 创建空集合变成了字典
问题2:集合元素必须是不可变类型
问题3:集合是无序的,不能索引访问
十、方法越来越多了,真的记不住啊!
- 编写程序,使用集合找出两个列表中的共同元素
- 编写程序,使用集合去除一个字符串中的所有重复字符
- 编写程序,使用集合运算找出只选修了数学或只选修了物理的学生
- 编写程序,判断一个字符串是否包含另一个字符串中的所有字符(使用集合)
- 编写程序,使用集合实现一个简单的推荐系统,根据用户兴趣推荐文章
Loading...
