Pythonにおけるenumerate
を用いたfor
文の使い方について解説します。
Contents
for
文におけるenumerate
の基本的な使い方
Pythonの繰り返し処理にはfor
文を使用します。for
文の基本については「for文の基本的な使い方」を参照してください。
Pythonのfor
文では、リストや辞書などのイテラブルなオブジェクトを処理します。その際に何番目の要素を操作しているのかは判断できません。繰り返しの中で取り出している要素が何番目の要素なのかを判断するにはenumerate
が便利です。
C言語等のfor
ループでfor(int i = 0; i < 5; i++)
のようにインデックスを使いながらループする方法と同様と考えると分かりやすいです。
この記事では、enumerate
を用いたfor
文の使い方について紹介します。
enumerate
の基本的な使い方
以降ではリストを対象としてenumerate
の基本的な使い方を紹介します。以降の例ではリストを使用しましたが、他のイテラブルなオブジェクトにも適用可能です。
インデックス番号と値をそれぞれ取得してfor文を実行する場合
以下にenumerate
を使ったfor
文の例を示します。
data = ["A", "B", "C", "D", "E"] # enumerateでインデックス番号と値を取り出して処理 for idx, dt in enumerate(data): print(f"idx: {idx}, dt: {dt}")
【実行結果】 idx: 0, dt: A idx: 1, dt: B idx: 2, dt: C idx: 3, dt: D idx: 4, dt: E
enumerate(data)
のようにリストを渡してfor
文で使用します。各ループで、各要素のインデックス番号がidx
に、data
の要素がdt
に順に格納されます。
タプル(tuple
)で取得してfor
文を実行する場合
enumerate
を使うとデータはタプルとして取得されます。for
文で1つの変数に受け取るとタプルとして扱えます。
data = ["A", "B", "C", "D", "E"] # enumerateの返却値をtupleで受け取る for tpl in enumerate(data): print(f"idx: {tpl[0]}, dt: {tpl[1]}")
【実行結果】 idx: 0, dt: A idx: 1, dt: B idx: 2, dt: C idx: 3, dt: D idx: 4, dt: E
上記例では、タプルの0番目がインデックス番号、1番目がdata
の値です。
enumerate
で任意のインデックス番号から開始する方法
ここまでenumerate
の使い方を紹介しましたが、インデックス番号は0番から開始されていました。
インデックス番号を任意の数から開始するには、引数で開始番号を指定します。以下は、開始のインデックス番号を5とした場合の例です。
data = ["A", "B", "C", "D", "E"] # enumerateのインデックス番号の開始数値を指定する for idx, dt in enumerate(data, 5): print(f"idx: {idx}, dt: {dt}")
【実行結果】 idx: 5, dt: A idx: 6, dt: B idx: 7, dt: C idx: 8, dt: D idx: 9, dt: E
上記例の場合、インデックス番号が指定した5から開始されていることが分かります。
まとめ
Pythonにおけるenumerate
を用いたfor
文の使い方について解説しました。
enumerate
は、イテラブルなオブジェクトでfor
文を実行する際に、取り出している要素のインデックス番号と値を同時に取得して実行することができます。
enumerate
では、値を直接取得する方法とタプルとして取得する方法があります。また、enumerate
のインデックス番号はデフォルトでは0から開始されますが、引数に指定することで開始インデックス番号を任意に設定できます。
for
文での処理では、enumerate
は非常によく使う方法ですので、うまく使いこなせるようになってもらいたいと思います。
enumerate
の公式ドキュメントはこちらを参照してください。
上記で紹介しているソースコードについてはgithubにて公開しています。参考にしていただければと思います。