(1)如果不知道这个包有什么方法可以使用 dir() 打印出来
python
from collections import deque
print(dir(deque))
(2)常用方法总结
| 分类 | 工具/函数 | 核心功能 | 重要注意事项 |
|---|---|---|---|
| 原生内置 | dict() |
d.update(obj)、d.keys()、d.values()、d.items() |
|
set() |
s.add(x)、s.update(iterable)/s.remove(x) |
||
enumerate(iter, start=0) |
同时返回下标与元素 | for i, val in enumerate(nums) |
|
any(iterable) |
任一元素为True,返回True | 支持生成器表达式,节省内存 | |
all(iterable) |
全部元素为True,返回True | 支持生成器表达式 | |
zip(*iterables) |
多序列并行打包;zip(*matrix)实现矩阵转置 |
zip结果为迭代器,需要list()展开 | |
sorted(iter, key, reverse) |
返回新有序序列 | list.sort()原地修改,无返回值 | |
max(iter, key) / min(iter, key) |
求最大/最小值,支持自定义比较规则 | key可以使用lambda表达式 | |
divmod(a, b) |
一次性返回(商,余数) | divmod(7,3) → (2,1) |
|
reversed(seq) |
生成反向迭代器 | 不改变原数组 | |
map(func, iterable) |
将函数依次作用于序列每个元素 | 返回迭代器,通常配合list()转换 |
|
| collections | Counter |
统计元素出现频次 | .most_common(k) 获取频次最高k个元素 |
defaultdict(int) |
字典默认值为0 | 省去if key not in dict判断 |
|
defaultdict(list) |
字典默认值为空列表 | 适合一对多映射关系 | |
deque() |
双端队列,两端操作O(1) | 禁止使用list.pop(0),时间复杂度O(n) | |
| heapq | heappush(heap, val) |
元素入堆 | Python仅提供最小堆O(logn) |
heappop(heap) |
弹出堆顶最小值 | 实现最大堆:存入负数O(logn) | |
heapify(arr) |
原地数组堆化 O(n) | 效率高于循环heappush | |
nsmallest(k, arr) / nlargest(k, arr) |
获取前k小/前k大元素 | 海量数据不推荐,建议手写堆 | |
| bisect | bisect_left(arr, x) |
查找第一个 ≥ x 的索引 | 下标二分工具,不能用于值域二分答案 |
bisect_right(arr, x) |
查找第一个 > x 的索引 | 常用于计算重复元素右边界 | |
insort(arr, x) |
有序数组插入元素 | 插入时间复杂度O(n) | |
| random | random.random() |
生成 [0.0, 1.0) 随机浮点数 | 算法随机采样、概率模拟 |
randint(a,b) |
生成 a, b 闭区间随机整数 | 左右边界都可取 | |
randrange(a,b) |
生成 [a, b) 左闭右开整数 | 可指定步长 randrange(a,b,step) |
|
choice(seq) |
从序列随机选取一个元素 | 序列不能为空 | |
sample(seq, k) |
无放回随机选取k个元素 | 蓄水池抽样、随机采样 | |
shuffle(seq) |
原地打乱序列 | 修改原数组,不返回新列表 | |
| functools | reduce(func, iter) |
迭代累积运算 | 逻辑复杂时代码可读性较差 |
@lru_cache(maxsize=None) |
递归函数记忆化缓存 | 参数只能是int/tuple/str,不能传list | |
| itertools | permutations(arr, k) |
排列(有序选取) | 大数据容易超时,复杂场景手写回溯 |
combinations(arr, k) |
组合(无序选取) | 元素不重复选取 | |
product(a,b) |
笛卡尔积 | 等价多层for循环 | |
accumulate(arr) |
生成前缀和迭代器 | 可转为list直接使用 | |
| math | math.inf / -math.inf float('inf') float('-inf') |
正无穷、负无穷 | 用来初始化最大/最小值 |
ceil(x) / floor(x) |
向上取整、向下取整 | 区分整数除法与浮点取整 | |
gcd(a,b) |
求最大公约数 | 仅支持非负数 | |
sqrt(x) |
开平方运算 | 返回浮点数 |