python循环速度,python几种循环方式

  python循环速度,python几种循环方式

  大家好,我是somenzz,今天我们要学习Python中最快的循环。

  比如各种姿势有一个简单的任务,就是从1个积累到1亿个。我们至少可以通过以下7种方式来实现:

  1.while循环定义while_loop(n=100_000_000):

  i=0

  s=0

  当我在:

  s=i

  i=1

  S2,for循环定义for_loop(n=100_000_000):

  s=0

  对于范围内的I(n):

  s=i

  return s3、sum rangedef sum _ range(n=100 _ 000 _ 000):

  Return sum(range(n))4、sum generator def sum _ generator(n=100 _ 000 _ 000):

  Return (I for I in range (n)) 5、求和列表合成(列表推导)def sum_list_comp(n=100_000_000):

  返回sum([i for i in range(n)])6、sum numpyimport numpy

  def sum_numpy(n=100_000_000):

  return numpy.sum(numpy.arange(n,dtype=numpy.int64))7、sum numpy python rangeimport numpy

  def sum _ numpy _ python _ range(n=100 _ 000 _ 000):

  Return numpy.sum(range(n))以上七种方法得到的结果是一样的,只是耗时不同。你可以猜猜哪个方法最快,然后看看下面这段代码的执行结果:

  导入时间

  def main():

  l_align=25

  print(f { 1,while loop :{ l _ align } } { time it . time it(while _ loop,number=1):6f} )

  print(f { 2,for loop :{ l _ align } } { time it . time it(for _ loop,number=1):6f} )

  print(f { 3、sum range :{ l _ align } } { time it . time it(sum _ range,number=1):6f} )

  print(f { 4、sum generator :{ l _ align } } { time it . time it(sum _ generator,number=1):6f} )

  print(f { 5、sum list comprehension :{ l _ align } } { time it . time it(sum _ list _ comp,number=1):6f} )

  print(f { 6、sum numpy :{ l _ align } } { time it . time it(sum _ numpy,number=1):6f} )

  print(f { 7、sum numpy python range :{ l _ align } } { time it . time it(sum _ numpy _ python _ range,number=1):6f} )

  if __name__==__main__ :

  main()的执行结果如下:

  对于来说,更快的方法本质上是做与while相同的事情,但while是纯Python代码,而for调用C扩展来递增和检查变量的边界。我们知道CPython解释器是用C语言写的,Python代码比C代码慢,而for循环代表C,while循环代表Python,所以for比while快。

  Numpy内置的sum比Python的sum快。numpy主要是用C写的,同样的函数肯定比numpy的快。同样,numpy的arange肯定比Python的range快。

  穿越较慢的numpy之和与Python的range结合,结果耗时最长。参见方法7。最好使用numpy包来完成任务,像方法6。

  生成器比列表派生快。生成器比较懒,不会一下子生成一亿个数字。但是,列表派生会一次性应用于所有数字,因此性能稍差,因为它占用大量内存,无法有效利用缓存。

  最后,本文分享了几种遍历求和的方法,比较了它们的性能,并给出了相应的结论。如果有帮助,请给我点个赞。如果转发,你会很感激。

  关注Python VII,轻松学会一个小技术。

  转载请联系作者授权,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: