Pythonでは、リストやその他のイテラブルなオブジェクトをループする際に、range(len())
とenumerate()
のどちらを使用するべきかという疑問がしばしば生じます。
range(len())の利点と欠点
range(len())
の利点は、リストの長さに基づいて整数のシーケンスを生成し、リストを簡単に反復処理できることです。しかし、欠点はループ内でインデックスを使用してリスト要素にアクセスする必要があり、可読性が少し悪いことです。
pokemon_picture_book = ["フシギダネ", "フシギソウ", "フシギバナ", "ヒトカゲ"]
for n in range(len(pokemon_picture_book)):
print(n, pokemon_picture_book[n])
enumerate()の利点と欠点
一方、enumerate()
はPythonの組み込み関数で、リストを反復処理しながら要素のインデックスと値を同時に返します。これにより、自分でインデックスを使用して要素にアクセスする必要がなく、for
ループを直接使用して反復処理できます。
pokemon_picture_book = ["フシギダネ", "フシギソウ", "フシギバナ", "ヒトカゲ"]
for number, name in enumerate(pokemon_picture_book):
print(number, name)
このコードはrange(len())
を使用した場合よりもシンプルで、可読性が高いです。
結論
Pythonでリストやその他のイテラブルなオブジェクトをループする際には、enumerate()
の使用が推奨されます。これは、enumerate()
がコードの可読性を向上させ、ループ内での要素へのアクセスを容易にするためです。ただし、特定の状況や要件によっては、range(len())
の使用が適切な場合もあります。.