Python で Enumerate を使用する方法 (インデックスによるループ)

Python で enumerate() 関数を使用する方法を学びます。クリーンな例を使用してリストをループするときに、インデックスと値の両方を取得します。

エディターでこのソリューションを試してください

概要

リスト、タプル、または文字列を反復処理する場合、多くの場合、項目自体とともに各項目の現在のインデックスを追跡する必要があります。一般的な初心者パターンは、手動でインクリメントされる別のカウンター変数を使用するか、「range(len(my_list))」を使用してインデックスを介して反復することです。ただし、Python は、はるかに洗練された Python の組み込みソリューションである `enumerate()` 関数を提供します。

`enumerate()` 関数は、任意の反復可能オブジェクトを引数として受け取り、インデックス値タプルのペアを生成する列挙オブジェクトを返します。 for ループ内でタプルアンパックを使用すると、インデックスと項目を同時に抽出できます。これにより、手動のカウンター変数と括弧のインデックス付けの必要性が完全になくなり、コードが大幅にクリーンになり、off-by-one エラーが発生しにくくなります。

デフォルトでは、`enumerate()` はインデックスを `0` からカウントし始めます。ただし、オプションの `start` キーワード引数を使用してカスタム開始インデックスを渡すことができます (例: `enumerate(items, start=1)`)。人間は通常、リストが 0 ではなく 1 から数え始めることを期待しているため、これは人間のユーザーにリスト番号を表示する場合に非常に便利です。

コードと実行の出力

このスクリプトは、enumerate を使用してリストを反復処理し、0 と 1 から始まるインデックスと項目のペアを取得する方法を示します。

fruits = ["apple", "banana", "cherry"]

# 1. Standard enumeration (starts at 0)
print("--- Standard Enumeration ---")
for index, fruit in enumerate(fruits):
    print(f"Index {index}: {fruit}")

# 2. Enumeration starting at a custom index (e.g., 1)
print("\n--- Starting at 1 ---")
for num, fruit in enumerate(fruits, start=1):
    print(f"Item #{num}: {fruit}")
端子出力
--- Standard Enumeration ---
Index 0: apple
Index 1: banana
Index 2: cherry

--- Starting at 1 ---
Item #1: apple
Item #2: banana
Item #3: cherry

段階的な実装

  • リスト (または任意の反復可能リスト) を組み込みの enumerate() 関数に渡します。
  • enumerate(list) のインデックス、値の構文を使用して、for ループで返されたタプルを解凍します。
  • 開始パラメータ (例: start=1) を指定して、インデックス カウンターの初期値を変更します。

よくある質問

enumerate() は元のリストを変更しますか?

いいえ、enumerate() は遅延反復子オブジェクトを返し、元のリストはまったく変更されないままになります。

enumerate() を辞書で使用できますか?

はい、ただし、辞書を直接反復処理すると、そのキーが生成されます。インデックス キーの値を反復するには、for i, (k, v) in enumerate(my_dict.items()): を使用します。

関連トピック

推奨される Python リソース

関連するインタラクティブなチュートリアル、チートシート、コード比較で知識を深めてください。