(1)如果不知道这个包有什么方法可以使用 dir() 打印出来
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) | 开平方运算 | 返回浮点数 |
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/XX_123_1_RJ/article/details/163573691



