首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python for 一定快过 while?要看情况啊~!

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

作者头像
不可言诉的深渊
发布2019-07-27 19:51:54
5910
发布2019-07-27 19:51:54
举报

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

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

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

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 的时候

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

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 循环。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python机器学习算法说书人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档