赞
踩
最近在复刷LeetCode,某种意义上做题要做得快,对STL保持熟悉度是蛮重要的,至少在求和、排序、查找时就不用重复敲代码了。于是,整理了部分常用python算术/数据结构/数理模块,以及相应的对TLE敏感的操作,希望能帮助到其它人。
format()
:格式化输出函数(在控制输出精度和空格补齐等问题中很好用)round(x)
:四舍五入cmp(x, y)
:比较2个对象,如果 x < y x < y x<y 返回 − 1 -1 −1, 如果 x = y x=y x=y 返回 0 0 0 , 如果 x > y x > y x>y 返回 1 1 1abs(x)
/max()
/min()
:绝对值/最大值/最小值len()
:返回对象的长度,如列表、字典等range(start=0, stop, step=1])
:返回一个可迭代对象,常用于for
循环sum(iterable)
: 求和函数pow(x, y, [z])
:求幂函数 x y x^y xy,运算完毕可以顺带对z
取模;大数取模问题可以直接ACsorted(iterable, key, reverse)
:采用Timsort的稳定排序算法,默认升序;该函数太重要了,请多写写代码研究一下它的各个参数isinstance(obj, type)
:判断类型all(iterable)
/any(iterable)
:迭代与操作/迭代或操作(0
、1
、None
均等价于False
)int(x, base=10))
/float()
/str()
:转整数(可自定义进制)/转浮点数/转字符串bin()
/oct()
/hex()
:10进制转二进制(返回0b
开头的字符串)/10进制转八进制(返回0
开头的字符串)/10进制转十六进制(返回0x
开头的字符串)ord()
/chr()
:字符转ASCII或ASCII转字符complex(real, imag)
:创建一个复数,不过现在可以直接通过语法糖创建,eg:1+2j
divmod()
:函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)
eval(expression, [globals, locals])
:执行一个字符串表达式,并返回表达式的值,eg:eval('pow(2, 2)')
= 4 =4 =4;在某些字符串解析题中非常好用,详细可见>此处<map(function, iterable...)
:映射函数,需要注意的是在Python3中返回一个迭代对象而不再是一个列表filter(function, iterable)
:过滤函数reduce(function, iterable, [initializer])
:累积函数,现在被归类到functools
模块中zip(iterable, ...)
:将对象中对应的元素打包成一个个元组,常用于并联取值,详见下文的【注意事项】hash(obj)
:返回哈希码,常用于对象比较或将其转化为唯一的索引(不过更推荐使用id()
完成该需求)id()
:返回对象的唯一标识符,和hash()
类似,但更鲁棒更快且可以对list
、def
等对象求idenumerate()
:将一个可遍历的数据对象组合为一个索引序列,eg:for i, v in enumerate(list_a):
注意事项:
print(*objects, sep=' ', end='\n')
可以通过设置seq
标志位来设定间隔字符、设置end
来设定结尾字符,常用于进行灵活的输出。对列表输出时,也常用' '.join(result_list)
来快速输出一个串,而不用挨个遍历。range()
中取遍历指示器,在Python 3中,在for循环内重复定义迭代变量不影响迭代遍历的值,如:# (Python 3)该段代码最终输出0 1 2三行,而不是只有一行0
for i in range(3): # 并不等价于C语言的 for(int i=0;i<3;i++)
print(i)
i += 10 # 内部遍历不影响作为循环i的值,这跟C语言差异很大,请留心
map
、filter
、reduce
等函数式编程函数很重要,能够让你少敲很多代码,特别是filter
在筛选题中有高的实用性。float()
可用来构造无限值,如float('inf')
。yield
关键字也很重要,可用来创建生成器,在数列生成、斐波那契查找等用处很大,可以极大的节省开销。>举例一则<,>教程指南<。需要注意的是,当迭代器函数执行结束时,将自动抛出StopIteration
异常,仅在 for 循环里,无需处理StopIteration
异常,循环会正常结束,否则需要使用except
关键字捕获。try
、except Exception as e
、finally
等语句可以直接避免在函数体里进行空值检定,大大减少敲键盘的时间开销:>举例一则<。set()
来进行列表去重。format()
函数能方便你的格式化输出,如小数精度控制问题,请考虑>进行学习<。input()
和raw_input()
的区别在于对于python的两个版本(2/3)表现不一致,python 3请使用前者,接收到的数据默认为str
。list
)变量,需要用global
关键词在函数内使用全局变量。del
关键词会比list.pop(index)
拥有更高的效率,属于TLE敏感的操作。list[::-1]
语法糖可以快速对列表进行倒序,在字符串倒序等问题中有奇效;但list.reverse()
更高效,属于TLE敏感的操作。(另外需要注意:后者是原地倒序)zip()
返回一个可迭代对象,需要手动list()
以进行其它列表操作。statistics
模块中;求众数可以调用collections.Counter
来实现。maximum recursion depth exceeded in comparison
。常量:
pi
:圆周率 (3.141592653589793
)inf
:无限大nan
:非数字(Not A NumbCopyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。