🔖
Pythonのenumerate()の使い方:インデックス付きループを簡単にする便利関数
はじめに
Pythonでリストなどをループ処理していると、
「インデックス(index)も一緒に取得したい」ことがあります。
当初は、以下のように書いていました。
items = ['apple', 'banana', 'cherry']
for i in range(len(items)):
print(i, items[i])
しかしPythonには、もっと簡単にインデックスと要素を同時に取得できる便利な関数があります。
それが enumerate()
です。
本記事では enumerate()
の使い方とメリットを解説します。
enumerate()
の基本
enumerate()
を使うと、リストやタプルなどのイテラブル(繰り返し可能なオブジェクト)から
「インデックス」と「要素」のペアを順番に取り出せます。
書き方は以下のようになります。
for i, item in enumerate(イテラブル):
# i:インデックス(0から始まる)
# item:要素
例
fruits = ['apple', 'banana', 'cherry']
for i, fruit in enumerate(fruits):
print(i, fruit)
出力:
0 apple
1 banana
2 cherry
- indexが自動で付きます。
-
range(len(fruits))
とfruits[i]
を書く必要はありません。
start
引数でインデックスを1から始める
(参考)enumerate()
はデフォルトでインデックスが0から始まりますが、
引数 start
を指定することで 任意の数字から始める ことも可能です。
for i, fruit in enumerate(fruits, start=1):
print(i, fruit)
出力:
1 apple
2 banana
3 cherry
- インデックスを1始まりにすることができます。
- ユーザーに見せるという観点では、1始まりが自然なので便利です。
enumerate()
の使いどころ
- リスト内の要素にインデックス番号をつけて処理したいとき
- forループ内でインデックスが必要だが、
range(len())
を書きたくないとき - データ処理やCSVの行番号を扱うとき
など、「indexも必要だけど簡潔に書きたい」場面で活躍します。
まとめ
方法 | 書き方 |
---|---|
従来の書き方 | for i in range(len(list)): print(i, list[i]) |
enumerate() 使用 |
for i, v in enumerate(list): print(i, v) |
enumerate()
を使うことで
「インデックスと値の取得」を簡潔に書けるようになります。
おわりに
最初はどのような場面で使うのかと疑問に思われるかもしれませんが、
enumerate()
に慣れると 「Pythonの書き方のルールに沿った、見やすいコード」 に一歩近づけます。
if文やfor文と同じように、
実践で役立つ基本的なテクニックとして覚えておくと便利です。
本記事が参考になれば幸いです。
Discussion