enumerate関数:Pythonのforループを賢く使う

Pythonforループを使う際、「要素」だけでなく「インデックス(位置)」も同時に取得したいと思ったことはありませんか?そんなときに活躍するのが、組み込み関数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を使うと、上記のコードをよりシンプルに書き換えることができます。

 

Python
 
# 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引数を使えば、好きな番号から始めることができます。

 

Python
 
# 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は、Pythonforループをより効率的かつPythonらしい方法で書くための基本です。

  • 要素とインデックスを同時に取得できる。

  • 手動でカウンター変数を管理する手間が省ける。

  • start引数を使って、インデックスの開始番号を指定できる。

forループを使う場面でインデックスが必要になったら、まずenumerateを使うことを検討してみてください。あなたのコードの可読性が格段に向上するはずです。