ich*_*igo 4 python loops xrange
什么是更快,使用枚举或使用xrange的for循环?
编辑:我已经测试过,我只看到最小的差异.
枚举稍快一些.在Python 3中测试:
>>>import pygame
>>>pygame.init()
>>>clock = pygame.time.Clock()
>>>a = list(range(100000))
>>>def do_with_range():
... clock.tick()
... k = 0
... for i in range(len(a)):
... k += a[i]
... print(clock.tick())
>>>def do_with_enumerate():
... clock.tick()
... k = 0
... for i, j in enumerate(a):
... k += j
... print(clock.tick())
>>>do_with_range()
23
>>>do_with_enumerate()
21
Run Code Online (Sandbox Code Playgroud)
如果a不是列表,而是生成器,则使用枚举(使用范围为74ms,使用枚举为23ms)会明显更快.
您可以使用标准库中的timeit模块来比较两者.下面使用的timeit.timeit()函数声明它运行1'000'000次并返回以秒为单位的总时间.在这个测试中,enumerate()稍慢.
>>> import timeit
>>> timeit.timeit('for i in xrange(100): a[i]', 'a = list(xrange(100))')
7.2920000553131104
>>> timeit.timeit('for i, o in enumerate(a): o', 'a = list(xrange(100))')
10.359999895095825
>>> timeit.timeit('for i in xrange(100): a[i] + 1', 'a = list(xrange(100))')
10.380000114440918
>>> timeit.timeit('for i, o in enumerate(a): o + 1', 'a = list(xrange(100))')
13.514999866485596
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10839 次 |
| 最近记录: |