6

には素敵なクラスがありますが、Enum文字enum列に対してのみ機能します。私は現在使用しています:

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

時期尚早の使用による最適な解決策ではないと思いますlen。より効率的に行うにはどうすればよいでしょうか。

4

1 に答える 1

13

このループを書く Pythonic の方法は次のとおりです。

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

enumerate要素のタイプに関係なく、任意のシーケンスで機能します。組み込み関数です。

編集:

Python 2.5 を使用していくつかのテストを実行した後、少し遅いことがtimeitわかりました。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
于 2009-06-07T15:20:01.143 に答える