在一个群里与大家学习python,群里讨论起了for循环和while循环的效率问题。当时有点好奇,因为从接触编程以来就没有考虑过这个问题,所以自己亲自进行了测试,并找了一些网上的资料。但是本文主要还是娱乐向为主,可以了解但是不要纠结这个问题
微信公众号:
大数据报文
在看这个问题之前,有两个前提希望大家明白
-
在实际编程中,选择循环的第一点并不是他的性能,而是可读性。所以大家了解结果,大概明白就好,不要对循环的效率过分执着。
-
这里的性能测试仅仅针对Python语言,以及非常小样本的测试结果得出,
不同语言不同机器对于结果的影响可能会大于这两种循环的性能本身,
所以如果在自己的机器上可能会得出与我的测试结果不一致得情况
@Python天下第一
同学提出了比较for循环和whlie循环效率的问题,出于好奇我进行了简单的测试。发现Python的for循环的执行效率确实会比while循环稍微低一点(两种循环同时执行自增操作1千万次,for的执行时间比while慢0.1秒左右)。另外有几位同学 运行同样的代码得出了大致相同的结论。
但是运行同一段程序,有位同学的测试结果却是for效率更高。这更印证了我在前面说的大家不要过分纠结两种循环的性能问题,因为可能机器环境的影响比两种循环本身的性能影响更大。
后来
@Python天下第一
同学又测试了使用已有列表作为迭代对象的情况,是for更快一些。所以
上面for消耗的时间主要是在range中。
再次强调,这里的结果仅仅针对Python而言。
因为我又测试了scala语言两种循环的效率,结果正好相反。而且scala输出的结果单位是毫秒,且scala循环的迭代次数为10亿次。所以很明显scala的效率要比Python高很多。(拓展这些还是想告诉大家要牢记
Python中两种循环具体要使用哪个首先考虑的要素是知不知道循环的具体次数
,而不是效率。但是希望大家通过这个问题中培养这种关注程序效率的意识,能够有所收获,有所成长)
背景在一个群里与大家学习python,群里讨论起了for循环和while循环的效率问题。当时有点好奇,因为从接触编程以来就没有考虑过这个问题,所以自己亲自进行了测试,并找了一些网上的资料。但是本文主要还是娱乐向为主,可以了解但是不要纠结这个问题微信公众号:大数据报文在看这个问题之前,有两个前提希望大家明白前提在实际编程中,选择循环的第一点并不是他的性能,而是可读性。所以大家了解...
这两天学习的过程中,遇到了OJ用例超时的问题。当时曾经怀疑过 for 和 while 的用时不同,在网上搜索,看到了一个帖子:
“https://cartoonyu.github.io/cartoon-blog/post/java/for%E4%B8%8Ewhile%E6%97%B6%E9%97%B4%E7%9A%84%E5%AF%B9%E6%AF%94/”
作者用 java 测试,得到的结果...
do while
循环
和while
循环
有区别
do while
循环
比while
循环
是一定会多一次
循环
do while
循环
是无论是否符合条件先进行
循环
再进行判断,
但是while
循环
是假如不成立就不进行
循环
。
for
循环
可以使用局部的变量和外部变量,而
while循环
终止是必须使用
外部变量。
另外从
循环
的已知数量可以想,for使用在已知
循环
次数的
循环
里面
while是使用在未知
循环
次数。这个在我的另一篇文章字符串计算
利用内置函数:使用内置函数可以加速
代码
的执行,例如 map() 和 filter()。
避免不必要的
循环
:如果可以直接使用列表推导式或生成器表达式代替 for
循环
,则应该使用它们。
利用预先计算:如果可以预先计算某些值,则应该尽量预先计算。
减少
循环
次数:应该尽量减少
循环
的次数,例如,使用 while
循环
代替 for
循环
。
大家都知道,
效率
不管是对于工作还是学习都是十分重要的。当然,
Python
也是需要
效率
的。众所周知,
Python
不是一种执行
效率
较高的语言。此外在任何语言中,
循环
都是一种非常消耗时间的操作。假如任意一种简单的单步操作耗费的时间为 1 个单位,将此操作重复执行上万次,最终耗费的时间也将增长上万倍。while 和 for 是
Python
中常用的两种实现
循环
的关键字,它们的运行
效率
实际上是有差距的。比如下面的测试
代码
:
这是一个简单的求和操作,计算从 1 到 n 之间所有自然数的总和。可以看到 for
循环
相