python速度比较_python3几种迭代方式速度对比

在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循环

博客园代码编辑器不太好用,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值