Python内置数据结构和算法
名称 | 语言内置 | 内置库 |
---|---|---|
线性结构 | list(列表)/tuple(元组) | array(数组)/ collections.nametuple(具名元组) |
链式结构 | collections.deque(双端队列) | |
字典结构 | dict(字典) | collections.Counter(计数器) / OrderDict(有序字典) |
集合结构 | set(集合) / frozenset( 不可变集合) | |
排序算法 | sorted | |
二分算法 | bisect模块 | |
堆算法 | heapq模块 |
collections模块
名称 | 功能 |
---|---|
nametuple | 通过名称访问元素的元组 |
deque | 双端队列,链式结构(可以实现queue/stack) |
counter | 实现计数器功能 |
orderDict | 记忆添加顺序的字典 |
defultDict | key不存在时,有默认值 |
dict底层
- 为了支持快速查找使用哈希表作为底层结构
- 哈希表平均查找时间复杂度O(1)
- CPython的解释器使用二次探查解决哈希冲突问题
- 常见问题:
- 哈希冲突
- 扩容
List和tuple区别
- 都是线性结构,支持下标访问
- list是可变对象,tuple保存的引用不可变
- list不可作为字典key, tuple可以
- 可变对象不可hash