Pythonでリストやシーケンスの要素を反復処理する際、forループでインデックスを取得したいことがよくあります。このような場面では、enumerate()を使うことが推奨されます。

基本的なenumerate()の使い方

enumerate()を使用すると、シーケンスのインデックスと要素を同時に取得できます。以下の例では、リストの各要素とそのインデックスを出力しています。

items = ['apple', 'banana', 'cherry']
for index, item in enumerate(items):
    print(index, item)

出力:

0 apple
1 banana
2 cherry

enumerate()はインデックスが自動的に付与され、デフォルトでは0から始まります。

インデックスの開始値を変更する

enumerate()にはオプションでstart引数を指定することができ、インデックスの開始値を変更できます。これにより、例えばインデックスを1から始めることが可能です。

for index, item in enumerate(items, start=1):
    print(index, item)

出力:

1 apple
2 banana
3 cherry

range(len())との違い

従来の方法では、range(len())を使ってインデックスを取得することができますが、enumerate()を使う方がPythonic(Pythonらしい)であり、コードがシンプルになります。

for i in range(len(items)):
    print(i, items[i])

上記のコードでは手動でインデックスと要素を組み合わせる必要がありますが、enumerate()を使えば、その手間が省けます。

応用例:リストのフィルタリング

enumerate()は単なるインデックス取得だけでなく、リストの操作にも役立ちます。例えば、奇数番目の要素だけを処理したい場合に、以下のように書くことができます。

for index, item in enumerate(items):
    if index % 2 == 1:
        print(item)

まとめ

enumerate()は、Pythonでリストやシーケンスを効率的にループ処理するために非常に便利です。インデックスと要素を同時に取得する際は、enumerate()を使うことでコードがシンプルかつ読みやすくなります。