目录
1. 引言
集合(set
)是 Python 3 中的一种无序、不可重复的数据结构,主要用于去重和集合运算(如交集、并集、差集等)。集合的存储方式基于哈希表,因此查找速度非常快。
本教程将详细介绍集合的定义、操作方法及应用场景,帮助您更好地理解其特性和使用方式。
2. 集合概述
2.1 定义与特性
- 定义:集合是一个无序、可变的数据结构,元素唯一,使用大括号
{}
或set()
进行定义。 - 特性:
- 无序:元素没有固定的存储顺序。
- 唯一:集合内的元素不允许重复。
- 可变:集合本身可变,但集合中的元素必须是不可变类型(如整数、字符串、元组)。
- 高效:基于哈希表实现,查询速度快。
深入了解 Python 集合(Python 官方文档)
示例:
1 2 | fruits = {"apple", "banana", "cherry"} print(fruits) # 输出: {'banana', 'apple', 'cherry'} |
2.2 创建集合
方式 | 示例 | 说明 |
---|---|---|
直接创建 | {"a", "b", "c"} | 手动定义元素 |
set() | set(["a", "b", "c"]) | 从可迭代对象创建 |
空集合 | set() | 注意 {} 创建的是空字典 |
1 2 3 4 5 6 7 8 | # 创建集合 s1 = {1, 2, 3} # 直接创建 s2 = set("hello") # 从字符串创建 s3 = set([1, 2, 3, 3, 2, 1]) # 从列表创建(自动去重) s4 = set() # 创建空集合 print(s1, s2, s3, s4) # 可能输出: {1, 2, 3} {'h', 'e', 'l', 'o'} {1, 2, 3} set() |
3. 集合操作
3.1 基本操作
操作 | 说明 | 示例 |
---|---|---|
获取长度 | len(set) | len({1, 2, 3}) → 3 |
添加元素 | set.add(value) | s.add(4) |
删除元素 | set.remove(value) | s.remove(2) |
安全删除 | set.discard(value) | s.discard(5) (不存在时不会报错) |
清空集合 | set.clear() | s.clear() |
更多 Python 集合操作(Real Python 教程)
1 2 3 4 5 | s = {1, 2, 3} s.add(4) # 添加元素 s.remove(2) # 删除元素 s.discard(5) # 安全删除(不会报错) print(s) # 输出: {1, 3, 4} |
3.2 集合方法
方法 | 说明 | 示例 |
---|---|---|
add() | 添加元素 | s.add(5) |
remove() | 删除元素,若不存在会报错 | s.remove(2) |
discard() | 删除元素,若不存在不会报错 | s.discard(5) |
pop() | 随机删除并返回一个元素 | s.pop() |
clear() | 清空集合 | s.clear() |
3.3 集合运算
操作 | 说明 | 示例 |
---|---|---|
并集 (` | `) | 合并两个集合 |
交集 (& ) | 取公共元素 | {1, 2} & {2, 3} → {2} |
差集 (- ) | 取 A 不在 B 中的元素 | {1, 2} - {2, 3} → {1} |
对称差集 (^ ) | 取 A 和 B 的非公共元素 | {1, 2} ^ {2, 3} → {1, 3} |
1 2 3 4 5 6 7 | a = {1, 2, 3} b = {2, 3, 4} print(a | b) # 并集: {1, 2, 3, 4} print(a & b) # 交集: {2, 3} print(a - b) # 差集: {1} print(a ^ b) # 对称差集: {1, 4} |
4. 集合与列表、字典的对比
特性 | 集合 (set ) | 列表 (list ) | 字典 (dict ) |
---|---|---|---|
结构 | 无序唯一元素 | 有序可重复元素 | 键值对存储 |
访问方式 | 通过元素查找 | 通过索引查找 | 通过键查找 |
可变性 | 可变 | 可变 | 可变 |
查找效率 | O(1) | O(n) | O(1) |
适用场景 | 去重、集合运算 | 有序存储 | 键值映射 |
5. 完整示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # 创建集合 numbers = {1, 2, 3, 4} letters = set("hello") # 集合运算 union_set = numbers | {3, 4, 5} intersection_set = numbers & {2, 3, 6} difference_set = numbers - {1, 4} symmetric_diff_set = numbers ^ {1, 4, 5} # 输出结果 print("Original:", numbers) print("Union:", union_set) print("Intersection:", intersection_set) print("Difference:", difference_set) print("Symmetric Difference:", symmetric_diff_set) |
6. 结论
Python 3 的集合是高效、灵活的数据结构,适用于去重和集合运算。它基于哈希表,查询速度快,但不支持索引访问。掌握集合后,您可以在数据处理中提高代码效率,避免重复元素带来的问题。
深入了解 Python 集合(W3Schools 教程)
7. 参考资料
- Python 官方文档:https://docs.python.org/3/library/stdtypes.html#set
- Real Python – 集合教程:https://realpython.com/python-sets/
- W3Schools – Python 集合:https://www.w3schools.com/python/python_sets.asp
- GeeksForGeeks – Python Set:https://www.geeksforgeeks.org/python-set/
站内链接:
发表回复