Pythonでforループを使う際、「要素」だけでなく「インデックス(位置)」も同時に取得したいと思ったことはありませんか?そんなときに活躍するのが、組み込み関数enumerateです。この関数を使えば、コードがより簡潔で読みやすくなります。
enumerateとは?
enumerateは、イテラブル(リストやタプルなど)をループ処理する際に、要素とそのインデックスをペアにして返してくれる関数です。
もしenumerateを使わない場合、インデックスを取得するには、手動でカウンター変数を用意する必要があります。
# enumerateを使わない例
fruits = ["apple", "banana", "cherry"]
index = 0
for fruit in fruits:
print(f"Index: {index}, Fruit: {fruit}")
index += 1
このコードは動きますが、カウンター変数を初期化したり、ループのたびにインクリメント(1増やす)したりする手間がかかります。
enumerateの基本的な使い方
enumerateを使うと、上記のコードをよりシンプルに書き換えることができます。
# enumerateを使った例
fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits):
print(f"Index: {index}, Fruit: {fruit}")
このコードを実行すると、どちらも同じ出力が得られます。
Index: 0, Fruit: apple
Index: 1, Fruit: banana
Index: 2, Fruit: cherry
enumerateは、ループのたびに(インデックス, 要素)というタプルを生成します。これをforループのindex, fruitという形で受け取ることで、コードが非常にすっきりとします。
enumerateの便利なオプション
enumerateには、ループ開始時のインデックス番号を指定できる便利な引数があります。
start引数
デフォルトではインデックスは0から始まりますが、start引数を使えば、好きな番号から始めることができます。
# start引数を使った例
fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits, start=1):
print(f"Item number: {index}, Fruit: {fruit}")
このコードの出力は以下のようになります。
Item number: 1, Fruit: apple
Item number: 2, Fruit: banana
Item number: 3, Fruit: cherry
ウェブサイトのリスト表示などで、1から始まる番号を振りたいときに非常に便利です。
まとめ
enumerateは、Pythonのforループをより効率的かつPythonらしい方法で書くための基本です。
-
要素とインデックスを同時に取得できる。
-
手動でカウンター変数を管理する手間が省ける。
-
start引数を使って、インデックスの開始番号を指定できる。
forループを使う場面でインデックスが必要になったら、まずenumerateを使うことを検討してみてください。あなたのコードの可読性が格段に向上するはずです。