看了标题,我想大家应该知道今天要讲什么了,今天我要讲循环效率的分析,在讲之前我首先说一下好多人普遍认为 Python for 要快过 while,至于为什么,可以继续往下看。

为什么普遍认为 for 快过 while?

大家都这样认为其实也不是凭感觉的,是有一定依据的,我们可以看一下下面这段程序。

from time import time
N = 100000000start = time()for i in range(N): passend = time()print(end-start)start = time()a = 0while a < N: a += 1end = time()print(end-start)

这里采用相同次数比时间的方法来比较两种循环的执行效率,运行结果如图所示:

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

从运行结果中我们可以发现确实是 for 更快,那么是不是任何循环只要用 for 就行了,while 就当不存在呢?其实并不是,至于为什么?请继续往下阅读。


Python for 一定快过 while?要看情况啊~!_死循环_02

总有 while 快过 for 的时候

我们可以发现上面两个循环都不是死循环,都是循环一定次数跳出的,如果是死循环会发生什么情况呢?先来看下面的程序。

from time import time
N = 100000000start = time()a = 0for i in iter(int, 1): if a == N: break a += 1end = time()print(end-start)start = time()a = 0while True: if a == N: break a += 1end = time()print(end-start)

这里依旧使用相同次数比时间的方法来比较两种循环的执行效率,运行结果如图所示:

Python for 一定快过 while?要看情况啊~!_执行效率_03

从运行结果中我们可以发现使用 while 速度更快,这说明 while 并不是一点用都没有的,那么有些人可能会问:什么情况下用 for?什么情况下用 while?下面我来简单总结一下。

Python for 一定快过 while?要看情况啊~!_死循环_02

总结

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

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

今天的文章有不懂的可以后台回复“加群”,备注:小陈学Python,不备注可是会被拒绝的哦~!

获取更多精彩

壹伴编辑器

Python for 一定快过 while?要看情况啊~!_死循环_05