循环使用枚举或在Python中使用xrange循环更快?

什么是更快,循环使用枚举或使用xrange?

编辑:我测试了,我只看到最小的差异。


枚举速度稍快。 在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

如果a不是一个列表,而是一个生成器,使用枚举将会明显更快(使用范围为74ms,使用枚举为23ms)。


您可以使用标准库中的timeit模块来比较两者。 下面使用的timeit.timeit()函数接受一条语句,它运行1'000'000次并返回总时间,以秒为单位。 在这个测试中,枚举()稍微慢一些。

>>> 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

亩。

for循环可以同时使用枚举和xrange,尽管它很愚蠢。 枚举函数添加一个索引,以便您可以分辨迭代中项目的索引。 xrange函数返回可迭代的数字。 当你想要做某些事情时,使用它,而不是迭代器中的每个元素。

例子:

for idx, element in ['foo', 'bar', 'baz']:
    print idx, element

for idx in xrange(3):
    print idx
链接地址: http://www.djcxy.com/p/4099.html

上一篇: What is faster for loop using enumerate or for loop using xrange in Python?

下一篇: What is the difference between range and xrange functions in Python 2.X?