众所周知,Python并不是一种非常高效的语言。此外,循环在任何语言中都是非常耗时的操作。如果任何一个简单的单步操作都需要花费1个单位的时间,如果这个操作被重复数万次,所花费的时间最终会增加数万倍。while和for是Python中实现循环常用的两个关键字,它们的运行效率其实是有差距的。例如下面的测试代码:ImportTimeITDEFWhile_loop(n=100_000_000):i=0S=0WHILEIwhileloop4.718853999860585#=>forloopn3.211570399813354这是一个简单的求和运算,所有数字从1到3354求和。您可以看到for循环比while快1.5秒。区别主要在于两者的机理。在每个循环中,while实际上比for多执行两个操作:边界检查和变量i的自增。也就是说,每次执行循环时,while都会进行边界检查(whileiwhileloop4.718853999#86058>forloop3.211570399813354#=>forloopwithincrement4.602369500091299#=>forloopwithtest4.18337869993411可以看出,增加的边界检查和自增操作确实极大地影响了for循环的执行效率前面提到,Python的底层解释器和内置函数实现在C语言。C语言的执行效率远高于Python。对于上述算术差序列求和的操作,借助于Python内置的sum函数,执行效率可以远高于for或while循环。ImportTimeITDEFWHILE_LOOP(n=100_000_000):i=0S=0WhileIwhileLOOP4.718853999860585#=>forLoop3.211570399813354#=>SumRange0.8658821999561042可以看出使用内置函数SUM替换循环后,代码执行效率提高了一倍。内置函数sum的累加操作其实是一个循环,只不过是用C语言实现的,而for循环中的求和操作是纯Python代码s+=i实现的。C>蟒蛇。扩展你的思维。小时候我们都听过高斯巧妙地计算1到100的和的故事。1…100的和等于(1+100)*50。这种计算方法也可以应用到上面的求和运算中。importtimeitdefwhile_loop(n=100_000_000):i=0s=0whileiwhileloop4.718853999860585#=>用于循环3.211570399813354#=>总和范围0.8658219999561042#=>数学总和2.40001827478408E-06最终数学总和的,一段代码要重新执行上亿次。索性直接接不要循环,通过数学公式,把上亿次的循环操作变成只有一步操作的作用。最终结论(有点谜语):实现循环最快的方法------就是不要循环。对于Python,尽可能使用内置函数,以尽量减少循环中的纯Python代码。以上就是本次分享的全部内容。觉得文章还不错的话,请关注公众号:Python编程学习圈,每日干货分享,发送“J”还能收到海量学习资料,涵盖Python电子书和教程,数据库编程、Django、爬虫、云计算等。或者去编程学习网了解更多编程技术知识。