如何枚举Python中的非字符串对象列表?

Ale*_*lex 5 python loops enumeration sequence

有一个很好的类Enumenum,但它仅适用于字符串.我目前正在使用:

    for index in range(len(objects)):
        # do something with index and objects[index]
Run Code Online (Sandbox Code Playgroud)

我想这不是最佳解决方案,因为过早使用len.怎样才能更有效地做到这一点?

Aym*_*ieh 13

以下是编写此循环的pythonic方法:

for index, obj in enumerate(objects):
  # Use index, obj.
Run Code Online (Sandbox Code Playgroud)

enumerate适用于任何序列,无论其元素的类型如何.它是一个内置功能.

编辑:

timeit使用Python 2.5 运行一些测试后,我发现enumerate速度稍慢:

>>> timeit.Timer('for i in xrange(len(seq)): x = i + seq[i]', 'seq = range(100)').timeit()
10.322299003601074
>>> timeit.Timer('for i, e in enumerate(seq): x = i + e', 'seq = range(100)').timeit()
11.850601196289062
Run Code Online (Sandbox Code Playgroud)