このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Python入門】for文とenumerate関数の組み合わせ

for文とenumerate関数の組み合わせ
Pythonのenumerate関数は、for文と組み合わせることで、イテラブルなオブジェクトの各要素とそのインデックス(何番目に取り出されたか)を同時に取得できる便利なツールです。これにより、リストや集合などの各要素を反復処理しながら、要素の位置情報を簡単に扱うことが可能になります。
ここでは、enumerate関数の基本構文とその処理の流れ、さらにfor文との組み合わせによる実践例を、サンプルプログラムや表を用いて詳しく解説します。

プログラムのダウンロード
「ダウンロード」から、JupyterLab で実行できるサンプルプログラムがダウンロードできます。ファイルは、ESET Endpoint Securityでウイルスチェックをしておりますが、ダウンロードとプログラムの実行は自己責任でお願いいたします。
1.enumerate関数の基本
1.1. 基本構文
enumerate関数は、イテラブルなオブジェクトを受け取り、各要素とそのカウント(インデックス)のタプルを返します。基本的な書式は以下の通りです。
for 変数1, 変数2 in enumerate(イテラブル):
文…
また、カウントの開始値を指定することもでき、デフォルトは0ですが、任意の整数に変更可能です。
for 変数1, 変数2 in enumerate(イテラブル, 開始値):
文…
解説
- 変数1には、要素が何番目に取り出されたかを示すカウントが代入されます。
- 変数2には、イテラブルから取り出された要素そのものが代入されます。
- 例えば、
enumerate(['a', 'b', 'c'], 1)
とすると、(1, 'a'), (2, 'b'), (3, 'c') というタプルが順次返されます。
1.2. 処理の流れと例
enumerate関数は、内部でカウンタを持ち、イテラブルの各要素を順に取り出しながら、その都度カウンタを更新します。以下の表は、enumerate関数を使ったときの処理の流れを示しています。
項目 | 説明 |
---|---|
カウンタの初期値 | 指定された開始値(デフォルトは0) |
各要素の取り出し | イテラブルから要素が順に取り出される |
タプルの生成 | (カウンタ, 要素) のタプルが生成され、for文でアンパッキングされる |
カウンタの更新 | 各ループごとにカウンタが1ずつ増加する |
サンプルプログラム
# サンプル:文字列の各文字とそのインデックスを表示
for index, char in enumerate("PYTHON", 1):
print(index, char)
実行結果
1 P
2 Y
3 T
4 H
5 O
6 N
解説
- 文字列
"PYTHON"
の各文字が順に取り出され、カウンタは1から始まります。 - 結果として、1 P、2 Y、3 T、4 H、5 O、6 N と表示されます。
2.for文とenumerate関数の組み合わせの応用
2.1. リストでの利用例
ここでは、野菜のリストを例に、enumerate関数を使って各要素とその位置を表示するプログラムを示します。
# サンプル:野菜のリストからインデックス付きで要素を表示
vegetables = ['carrot', 'spinach', 'potato', 'tomato']
for i, veg in enumerate(vegetables, 1):
print(f"{i}: {veg}")
実行結果
1: carrot
2: spinach
3: potato
4: tomato
解説
- リスト
vegetables
には4種類の野菜が格納されています。 enumerate(vegetables, 1)
により、カウンタは1から始まり、各野菜が順番にアンパッキングされます。- f文字列を使って、
"{i}: {veg}"
という形式で番号と野菜の名前を表示します。 - 結果例として、1: carrot、2: spinach、3: potato、4: tomato が出力されます。
2.2. 集合や辞書でも利用可能
enumerate関数は、リスト以外のイテラブルなオブジェクトでも利用できます。たとえば、集合の場合、取り出す順序は保証されませんが、各要素に番号を付けて表示することが可能です。
# サンプル:集合から要素を番号付きで表示
fruits = {'apple', 'banana', 'cherry'}
for i, fruit in enumerate(fruits, 1):
print(f"{i}: {fruit}")
実行結果
1: cherry
2: banana
3: apple
解説
- 集合
fruits
は順序が固定されていませんが、enumerate関数により、各要素が取り出された順にカウンタが付与されます。 - 結果は環境によって順序が異なる場合がありますが、番号付きで出力されます。
【for文とenumerate関数の組み合わせの利点】
利点 | 説明 |
---|---|
簡潔なカウンタ管理 | カウンタの初期化、更新が自動で行われ、コードが簡潔になる。 |
可読性の向上 | アンパッキングにより、何番目の要素かが明示され、コードの意味が明確になる。 |
幅広いイテラブルへの適用 | リスト、集合、辞書のキー、文字列など、どんなイテラブルでも利用可能。 |
まとめ
for文とenumerate関数の組み合わせを活用することで、イテラブルなオブジェクトから要素を順次取り出しながら、その要素が何番目に取り出されたかの情報も同時に取得でき、コードの可読性と効率が大幅に向上します。
- 基本構文:
for index, element in enumerate(イテラブル, 開始値):
で、カウンタと要素を同時に取得できます。 - 実践例: リストや集合、辞書のキーに対して番号付きの出力が可能で、データの順序や位置情報を簡単に管理できます。
- 利点: 簡潔なカウンタ管理と、コードの意味を明確にする効果があり、特に繰り返し処理において大変有用です。
これらのテクニックをマスターすることで、for文を用いた反復処理の幅が広がり、より効率的で読みやすいコードを実装できるようになります。