Python で Ruby の Enumerable#each_with_index を行う方法について説明します。
組み込み関数 enumerate を使う
配列をループで順番にアクセスするときに、そのインデックスも使いたいときがあります。
members = ['Alice', 'Carol', 'Bob', 'Dave']
i = 0
for member in members:
print("{}: {}".format(i, member))
i += 1
インデックスをカウントするために変数 i を定義する方法もありますが、 代わりに、enumerate という組み込み関数を使って、変数 i のスコープを小さくすることができます。
members = ['Alice', 'Carol', 'Bob', 'Dave']
for i, member in enumerate(members):
print("{}: {}".format(i, member))
余談
enumerate はジェネレータ関数であり、次のコードと等価です。
def enumerate(sequence, start=0):
n = start
for elem in sequence:
yield n, elem
n += 1
以上です。