Python for 一定快过 while?要看情况啊~!

2019-07-27 19:51:54 浏览数 (1)

看了标题,我想大家应该知道今天要讲什么了,今天我要讲循环效率的分析,在讲之前我首先说一下好多人普遍认为 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?下面我来简单总结一下。

总结

从上面的分析中我们可以得出以下两个结论:

  1. 如果不是死循环,优先考虑 for 循环。
  2. 如果是死循环,优先考虑 while 循环。

0 人点赞