Python for-in循环与while循环效率比较

背景

在一个群里与大家学习python,群里讨论起了for循环和while循环的效率问题。当时有点好奇,因为从接触编程以来就没有考虑过这个问题,所以自己亲自进行了测试,并找了一些网上的资料。但是本文主要还是娱乐向为主,可以了解但是不要纠结这个问题

微信公众号:大数据报文

在看这个问题之前,有两个前提希望大家明白

前提

  • 在实际编程中,选择循环的第一点并不是他的性能,而是可读性。所以大家了解结果,大概明白就好,不要对循环的效率过分执着。
  • 这里的性能测试仅仅针对Python语言,以及非常小样本的测试结果得出,不同语言不同机器对于结果的影响可能会大于这两种循环的性能本身,所以如果在自己的机器上可能会得出与我的测试结果不一致得情况

正文

@Python天下第一 同学提出了比较for循环和whlie循环效率的问题,出于好奇我进行了简单的测试。发现Python的for循环的执行效率确实会比while循环稍微低一点(两种循环同时执行自增操作1千万次,for的执行时间比while慢0.1秒左右)。另外有几位同学 运行同样的代码得出了大致相同的结论。

但是运行同一段程序,有位同学的测试结果却是for效率更高。这更印证了我在前面说的大家不要过分纠结两种循环的性能问题,因为可能机器环境的影响比两种循环本身的性能影响更大。 Python for-in循环与while循环效率比较_第1张图片

后来@Python天下第一 同学又测试了使用已有列表作为迭代对象的情况,是for更快一些。所以上面for消耗的时间主要是在range中。

Python for-in循环与while循环效率比较_第2张图片

再次强调,这里的结果仅仅针对Python而言。

因为我又测试了scala语言两种循环的效率,结果正好相反。而且scala输出的结果单位是毫秒,且scala循环的迭代次数为10亿次。所以很明显scala的效率要比Python高很多。(拓展这些还是想告诉大家要牢记Python中两种循环具体要使用哪个首先考虑的要素是知不知道循环的具体次数,而不是效率。但是希望大家通过这个问题中培养这种关注程序效率的意识,能够有所收获,有所成长) Python for-in循环与while循环效率比较_第3张图片

你可能感兴趣的:(Python)