GrowthDiary007头像
关注

Python 常用函数总结

(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()转换
collectionsCounter统计元素出现频次.most_common(k) 获取频次最高k个元素
defaultdict(int)字典默认值为0省去if key not in dict判断
defaultdict(list)字典默认值为空列表适合一对多映射关系
deque()双端队列,两端操作O(1)禁止使用list.pop(0),时间复杂度O(n)
heapqheappush(heap, val)元素入堆Python仅提供最小堆O(logn)
heappop(heap)弹出堆顶最小值实现最大堆:存入负数O(logn)
heapify(arr)原地数组堆化 O(n)效率高于循环heappush
nsmallest(k, arr) / nlargest(k, arr)获取前k小/前k大元素海量数据不推荐,建议手写堆
bisectbisect_left(arr, x)查找第一个 ≥ x 的索引下标二分工具,不能用于值域二分答案
bisect_right(arr, x)查找第一个 > x 的索引常用于计算重复元素右边界
insort(arr, x)有序数组插入元素插入时间复杂度O(n)
randomrandom.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)原地打乱序列修改原数组,不返回新列表
functoolsreduce(func, iter)迭代累积运算逻辑复杂时代码可读性较差
@lru_cache(maxsize=None)递归函数记忆化缓存参数只能是int/tuple/str,不能传list
itertoolspermutations(arr, k)排列(有序选取)大数据容易超时,复杂场景手写回溯
combinations(arr, k)组合(无序选取)元素不重复选取
product(a,b)笛卡尔积等价多层for循环
accumulate(arr)生成前缀和迭代器可转为list直接使用
mathmath.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

文章来源crawl

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--