Python 常用函数总结

(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) 开平方运算 返回浮点数
相关推荐
麻雀飞吧1 小时前
先判断工具用来学习、开发还是执行
人工智能·python
人邮异步社区2 小时前
学习Python的最佳学习路径是什么?
python·程序员
C++ 老炮儿的技术栈2 小时前
我们在设计tcp协议时,要传一个字符串过去,报文:头十长度十内容,是否要把‘\0‘也填入,长度是否包含‘\0‘
开发语言·数据结构·c++·mfc·c
传奇开心果编程3 小时前
【Rust入门练中学】第2课:变量、可变性与常量
开发语言·学习·rust
zr想努力3 小时前
从0开始配置Perforce4环境
开发语言
troy1284 小时前
Python 基础语法(九):Django/Flask/FastAPI 三大 Web 框架详细对比解析
python·jupyter·django·flask·github·fastapi
jzshmyt4 小时前
我用 Python 从零“生成“了一个宇宙,然后让它观察自己(v14)
人工智能·pytorch·python·numpy·matplotlib·空间计算·scipy
幸运小圣4 小时前
PointerEvent 常用属性与事件整理【JavaScript】
开发语言·javascript·ecmascript
长谷深风1115 小时前
评测AI Agent:三种裁判各司其职
java·大数据·开发语言·人工智能·ai agent
边境悍匪5 小时前
蜗牛学苑 Java 智能体学习 Day42|项目周开发技术汇总 1 思维导图复盘
java·开发语言·spring boot·学习·spring