今回は、Pythonの組み込み関数の一つである「enumerate」について解説していきます。
「enumerate」はリストや辞書などのループ可能なイテラブルの要素に使うことで、リストの要素と要素番号を同時に取得できる便利な関数です。
本記事では、「enumerate」関数の基本的な使い方と、実際にどのような場面で用いることが多いのかを具体的に解説していきます。
基本的な使い方
リストの要素とインデックスの番号(要素番号)を同時に取得するプログラムを考えてみます。
まずは「enumerate」を使わない場合の例を見てみましょう。
fruits = ["apple", "banana", "cherry"]
num = 0
for fruit in fruits:
print("{}番目の果物は{}です。".format(num, fruit))
num += 1
"""
0番目の果物はappleです。
1番目の果物はbananaです。
2番目の果物はcherryです。
"""「enumerate」関数を使わない場合、インデックスの番号を取得するために「num」という変数をわざわざ準備する必要があり、冗長な印象を持ちます。
次は「enumerate」関数を使った場合を見てみましょう。
fruits = ["apple", "banana", "cherry"]
for i, fruit in enumerate(fruits):
print("{}番目の果物は{}です。".format(i, fruit))
"""
0番目の果物はappleです。
1番目の果物はbananaです。
2番目の果物はcherryです。
"""まったく同じ処理ですがプログラムは短くなり、読みやすくなりました。
このように、要素とインデックスの番号を同時に取得する場合には、「enumerate」関数を用いると便利です。
リストなどの使い方は次の記事が参考になります。
参考:【Python】for文で合計を求める方法!数学的処理を用いた計算コストも解説!
参考:Pythonで0.1刻みにfor文のループをする方法
enumerateのインデックスを「1」から開始する
「enumerate」関数は第一引数にループ可能なイテラブルオブジェクトを、第二引数に開始番号を指定できます。
先ほどは「0」からのスタートでしたが開始番号は自由に設定することでもできます。
fruits = ["apple", "banana", "cherry"]
for i, fruit in enumerate(fruits, 1):
print("{:03}番目の果物は{}です。".format(i, fruit))
"""
001番目の果物はappleです。
002番目の果物はbananaです。
003番目の果物はcherryです。
"""0埋めすることももちろんできます!便利ですね!
増分(step数)を指定
fruits = ["apple", "banana", "cherry"]
step = 3
for i, fruit in enumerate(fruits, 1):
print("{}個の{}".format(i * step, fruit))
"""
3個のapple
6個のbanana
9個のcherry
"""enumerateをよく使う場面
Products = {("apple", 100) : 30, ("banana", 200) : 10, ("cherry", 300) : 20}
for i, product in enumerate(Products, start=1):
print("商品番号{:03}の{}は1個{}円で{}個あるため金額は{}円".format(
i, product[0], product[1], Products[product], product[1] * Products[product]))
"""
商品番号001のappleは1個100円で30個あるため金額は3000円
商品番号002のbananaは1個200円で10個あるため金額は2000円
商品番号003のcherryは1個300円で20個あるため金額は6000円
"""少し複雑ですが辞書にもenumerateを使えます!
まとめ
今回は、Pythonの組み込み関数の一つである「enumerate」について解説しました。
「enumerate」はリストや辞書などのループ可能なイテラブルの要素に使うことで、リストの要素と要素番号を同時に取得できる便利な関数だということがわかりました。
「enumerate」関数を使うことで可読性の高いプログラムを記述できるのでぜひ積極的に使ってみてください!
ナノトイラボ 

