2009-06-07 53 views
5

enum有一個很好的類Enum,但它只適用於字符串。我目前使用:如何枚舉Python中的非字符串對象列表?

for index in range(len(objects)): 
     # do something with index and objects[index] 

我想這不是最佳的解決方案,由於過早使用len。如何更有效地做到這一點?

回答

12

下面是寫這個循環的Python的方式:在任何序列

for index, obj in enumerate(objects): 
    # Use index, obj. 

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

是不是更有效? – 2009-06-07 15:52:35