【Python】enumerateを用いたfor文の使い方 ~インデックスと要素を取得~

Pythonにおけるenumerateを用いたfor文の使い方について解説します。
目次
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は非常によく使う方法ですので、うまく使いこなせるようになってもらいたいと思います。
上記で紹介しているソースコードについては GitHub にて公開しています。参考にしていただければと思います。




