看了标题,我想大家应该知道今天要讲什么了,今天我要讲循环效率的分析,在讲之前我首先说一下好多人普遍认为 Python for 要快过 while,至于为什么,可以继续往下看。
为什么普遍认为 for 快过 while?
大家都这样认为其实也不是凭感觉的,是有一定依据的,我们可以看一下下面这段程序。
代码语言:javascript复制from time import time
N = 100000000
start = time()
for i in range(N):
pass
end = time()
print(end-start)
start = time()
a = 0
while a < N:
a = 1
end = time()
print(end-start)
这里采用相同次数比时间的方法来比较两种循环的执行效率,运行结果如图所示:
从运行结果中我们可以发现确实是 for 更快,那么是不是任何循环只要用 for 就行了,while 就当不存在呢?其实并不是,至于为什么?请继续往下阅读。
总有 while 快过 for 的时候
我们可以发现上面两个循环都不是死循环,都是循环一定次数跳出的,如果是死循环会发生什么情况呢?先来看下面的程序。
代码语言:javascript复制from time import time
N = 100000000
start = time()
a = 0
for i in iter(int, 1):
if a == N:
break
a = 1
end = time()
print(end-start)
start = time()
a = 0
while True:
if a == N:
break
a = 1
end = time()
print(end-start)
这里依旧使用相同次数比时间的方法来比较两种循环的执行效率,运行结果如图所示:
从运行结果中我们可以发现使用 while 速度更快,这说明 while 并不是一点用都没有的,那么有些人可能会问:什么情况下用 for?什么情况下用 while?下面我来简单总结一下。
总结
从上面的分析中我们可以得出以下两个结论:
- 如果不是死循环,优先考虑 for 循环。
- 如果是死循环,优先考虑 while 循环。