在 Python 3 中,集合(set)是一种无序且元素唯一的数据结构,它基于哈希表实现,提供了高效的成员检测、去重以及数学集合运算等功能。本文将深入解析 Python 3 集合的核心特性、常用操作及应用场景。
集合的核心特性包括:
- 元素唯一性:自动去重
- 无序性:不支持索引访问
- 元素必须可哈希:不可变类型(如整数、字符串、元组)可作为元素
创建集合的方式有两种:
fruits = {'apple', 'banana', 'cherry'}
print('apple' in fruits)
s = {1, 2, 3, 4}
s.remove(3)
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
fs = frozenset([1, 2, 3])
s = {x**2 for x in range(5)}
a = {1, 2, 3}
b = {3, 4, 5}
a.update(b)
集合基于哈希表实现,常见操作的时间复杂度为:
- 成员检测(in):O (1)
- 添加元素(add):O (1)
- 删除元素(remove):O (1)
- 交集、并集、差集:O (n)
对比列表的成员检测 O (n),集合在大规模数据去重和快速查找场景中性能优势明显。
lst = [1, 2, 2, 3, 3, 3]
unique_lst = list(set(lst))
users_in_group1 = {'Alice', 'Bob', 'Charlie'}
users_in_group2 = {'Bob', 'David', 'Eve'}
common_users = users_in_group1 & users_in_group2
- 集合元素必须可哈希,因此列表、字典等可变类型不能作为集合元素
- 集合本身是无序的,若需要有序集合,可使用
OrderedDict或list配合set去重
- 集合操作会生成新集合,若需原地修改,使用
update()等原地方法
- 集合的哈希表实现使其在内存占用上通常高于列表