python性能优化经验_Python 性能优化

循环的优化

有多重循环的尽量将内层的计算提到上一层。

使用 xrange 比 range 节省大量的系统内存。

可以不用循环的时候就不要用循环,比如 改用map()

字符串的优化

字符串数量小的时候,"+"和格式化都很快,join是最慢的,字符串数量大的时候,join比较快。

所以:

简单字符串连接时,直接使用"+"

有格式化需求时,使用"%"

当有大量字符串时,使用"str.join"

列表的优化

成员的查找访问等操作,字典比列表快,查找字典的时间复杂度为O(1),查找列表为O(n)。

涉及到求 list 交集、并集或者差的问题,转换为 set 来操作比较快。

使用列表解析(list comprehension)和生成器表达式(generator expression)列表解析要比在循环中重新构建一个新的 list 更为高效。

其他技巧:

如果需要交换两个变量的值使用 a,b=b,a ,而不是借助中间变量 t=a;a=b;b=t

使用级联比较 "x < y < z" 而不是 "x < y and y < z";

if done is not None 比语句 if done != None 快

if is True 比 if == True 快

while 1 要比 while True 更快

如果存在条件表达式 if x and y,在 x 为 false 的情况下 y 表达式的值将不再计算。

所以对于and,应该把满足条件少的放在前面,而对于or,把满足条件多的放在前面。

20171230

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值