码迷,mamicode.com
首页 > 编程语言 > 详细

python3几种迭代方式速度对比

时间:2015-07-29 19:06:34      阅读:305      评论:0      收藏:0      [点我收藏+]

标签:

在python学习手册上看到的,比较实用,测试包括两个文件:

MyTimer.py:一个简单的函数计时器

test.py:测试5中迭代方式

MyTimer.py文件:

__author__ = ‘lmw‘
import time
reps = 1000
#函数重复次数
repslist = range(reps)


def timer(func,*pargs,**kargs):
# func函数名称,后面两个是参数
start = time.clock()
# 开始时间
for i in repslist:
ret = func(*pargs,**kargs)
elapsed = time.clock() - start
# 花费时间
return (elapsed,ret)
# ret记录最后一次结果

 

test.py文件:

import sys,MyTimer

reps=1000
repslist=range(reps)


def forloop():
res = []
for x in repslist:
res.append(abs(x))
return res
#通过for循环迭代

def listComp():
return [abs(x) for x in repslist]
#列表解析

def mapCall():
return list(map(abs,repslist))
#调用map

def genExpr():
return list(abs(x) for x in repslist)
#生成器表达式

def genFunc():
def gen():
for x in repslist:
yield abs(x)
return list(gen())
#生成器函数

print(sys.version)
for test in (forloop,listComp,mapCall,genExpr,genFunc):
elapsed, result = MyTimer.timer(test)
print (‘-‘*33)
print (‘%-9s: %.5f => [%s...%s]‘%(test.__name__,elapsed,result[0],result[-1]))

测试结果:

技术分享

 

可以看出效率从高到低依次为:

调用map>列表解析>生成器函数>生成器表达式>for循环

 

 

博客园代码编辑器不太好用,需要拷贝源码的小伙伴请访问www.from0701.com

python3几种迭代方式速度对比

标签:

原文地址:http://www.cnblogs.com/from0701/p/4686509.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!