我是靠谱客的博主 老迟到香水,这篇文章主要介绍Python五种迭代方式 for循环,列表推导式,内置函数map(),生成器推导式,生成器函数 速度对比,现在分享给大家,希望可以做个参考。

对比了Python3的五种迭代方式进行函数简单计算的花费时间
五种迭代分别是,for循环,列表推导式,内置函数map(),生成器推导式,生成器函数
简单计算以add()加10操作和abs()绝对值举例

运行次数指每个函数执行的次数,默认每个函数对10000个数进行计算。

从测试结果可以看出效率从高到低依次为:
调用map > 列表解析 > 生成器函数 > 生成器表达式 > for循环
在这里插入图片描述

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import time import sys #函数重复次数 def timer(func,*pargs,**kargs): # func函数名称,后面两个是参数 start = time.clock() # 开始时间 for i in range(runtime): ret = func(*pargs,**kargs) elapsed = time.clock() - start # 花费时间 return (elapsed,ret) # ret记录最后一次结果 reps=10000 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()) #生成器函数 # ====================================================================== def add(k): return k+10 def forloop2(): res = [] for x in repslist: res.append(add(x)) return res #通过for循环迭代 def listComp2(): return [add(x) for x in repslist] #列表解析 def mapCall2(): return list(map(add,repslist)) #调用map def genExpr2(): return list(add(x) for x in repslist) #生成器表达式 def genFunc2(): def gen(): for x in repslist: yield add(x) return list(gen()) #生成器函数 runtime=int(input('输入运行次数:')) print(sys.version) for test in (forloop,listComp,mapCall,genExpr,genFunc): elapsed, result = timer(test) print ('{0:10}: {1:.5f} => [{2:}...{3:}]'.format(test.__name__,elapsed,result[0],result[-1])) print ('-'*40) for test in (forloop2,listComp2,mapCall2,genExpr2,genFunc2): elapsed, result = timer(test) print ('{0:10}: {1:.5f} => [{2:}...{3:}]'.format(test.__name__,elapsed,result[0],result[-1]))

最后

以上就是老迟到香水最近收集整理的关于Python五种迭代方式 for循环,列表推导式,内置函数map(),生成器推导式,生成器函数 速度对比的全部内容,更多相关Python五种迭代方式内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(75)

评论列表共有 0 条评论

立即
投稿
返回
顶部