首页 > 代码库 > python list 的+、+=和extend操作
python list 的+、+=和extend操作
据说后者在list很大的时候性能稍好。
于是测试了一把:
import timedef time_cost(func): def _time_cost(*args,**kw): t1=time.time() func(*args,**kw) t2=time.time() return t2-t1 return _time_cost@time_costdef test_add(list_a,huge_list_b): return list_a+huge_list_b@time_costdef test_extend(list_a,huge_list_b): return list_a.extend(huge_list_b)if __name__==‘__main__‘: print ‘-----big list test-------------‘ a=[1]*1000 b=[‘a‘]*(10**8) print ‘add cost:%s seconds‘%test_add(a,b) print ‘extend cost:%s seconds‘%test_extend(a,b) print ‘-----small list test-------------‘ a=[1]*1000 b=[‘a‘]*(10**2) print ‘add cost:%s seconds‘%test_add(a,b) print ‘extend cost:%s seconds‘%test_extend(a,b)
我机器是win7,64bit,6G 内存,i3 cpu,结果如下:
-----big list test-------------add cost:1.30500006676 secondsextend cost:0.591000080109 seconds-----small list test-------------add cost:0.0 secondsextend cost:0.0 seconds
在b为10^8长度的时候,extend所耗的时间几乎只有+操作的一半。
在1000长度的级别,相差不大。几乎相同。
+=等同于extend,如下:
import timedef time_cost(func): def _time_cost(*args,**kw): t1=time.time() func(*args,**kw) t2=time.time() return t2-t1 return _time_cost@time_costdef test_add(list_a,huge_list_b): list_a+=huge_list_b return list_a@time_costdef test_extend(list_a,huge_list_b): return list_a.extend(huge_list_b)if __name__==‘__main__‘: print ‘-----big list test-------------‘ a=[1]*1000 b=[‘a‘]*(10**8) a2=[1]*1000 print ‘+= cost:%s seconds‘%test_add(a,b) print ‘extend cost:%s seconds‘%test_extend(a2,b)
输出:
-----big list test-------------+= cost:0.506999969482 secondsextend cost:0.510999917984 seconds
python list 的+、+=和extend操作
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。