2009-06-07 7 views
5

enumの素敵なクラスEnumがありますが、それは文字列に対してのみ機能します。私は現在、使用しています:Pythonで文字列以外のオブジェクトのリストを列挙するには?

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

私はそれがlenの早期使用のために最適なソリューションではありませんね。どのようにしてより効率的に行うことが可能ですか?かかわらず、その要素の型の任意のシーケンスに

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

enumerate作品:

答えて

12

は、ここでは、このループを書くためのニシキヘビの方法です。それは組み込み関数です。

編集:

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

は、それがより効率的ですか? –

+0

@Bastien - いくつかのtimeitテストの後、私は 'enumerate'が質問のコードよりやや遅くなることを発見しました。私は私の答えを更新します。 py3k結果の –

+0

は全く反対です:範囲版は列挙版よりも3倍遅いです。 – SilentGhost

関連する問題