内置数据结构
选择合适的数据结构能让代码更高效。理解常见操作的时间复杂度,是写出高性能 Python 的第一步。
list / tuple / dict / set 特性对比
| 容器 | 有序 | 可变 | 元素可重复 | 典型操作复杂度 |
|---|---|---|---|---|
list | 是 | 是 | 是 | 索引 O(1),尾部增删 O(1),中间插入 O(n) |
tuple | 是 | 否 | 是 | 索引 O(1),可哈希 |
dict | 是(3.7+) | 是 | 键不重复 | 增删改查平均 O(1) |
set | 否 | 是 | 否 | 增删查平均 O(1) |
collections 模块
标准库 collections 提供了更专用的容器。
deque:双向队列,两端append/popleft均为 O(1),适合队列与滑动窗口Counter:可哈希对象计数,most_common(n)快速取 Top-Ndefaultdict:访问缺失键时自动创建默认值,避免KeyErrorOrderedDict:3.7+ 后dict已保序,基本被普通dict取代
from collections import Counter, defaultdict
cnt = Counter("abracadabra")
cnt.most_common(2) # [('a', 5), ('b', 2)]
graph = defaultdict(list)
graph["A"].append("B")
何时选哪个
- 需要按键快速查找:用
dict - 需要去重或成员测试:用
set - 频繁在头部插入/删除:用
deque而非list - 维护插入顺序且只追加:用
list - 数据不可变且需作字典键:用
tuple