note.nkmk.me

Python, enumerateの使い方: リストの要素とインデックスを取得

Date: 2017-11-27 / tags: Python, リスト
スポンサーリンク

forループでインデックスを取得できるenumerate関数

Pythonのenumerate()関数を使うと、forループの中でリスト(配列)などのイテラブルオブジェクトの要素と同時にインデックス番号(カウント、順番)を取得できる。

通常のforループ

l = ['Alice', 'Bob', 'Charlie']

for name in l:
    print(name)
# Alice
# Bob
# Charlie

enumerate関数を使ったforループ

引数にリストなどのイテラブルオブジェクトを指定する。

インデックス番号, 要素の順に取得できる。

for i, name in enumerate(l):
    print(i, name)
# 0 Alice
# 1 Bob
# 2 Charlie

enumerate関数のインデックスを1から開始

上の例のように、デフォルトだとenumerate()関数のインデックスは0から始まる。

0以外の数値から開始したい場合は、enumerate()関数の第二引数に任意の開始数値を指定する。

1からはじめる場合。

for i, name in enumerate(l, 1):
    print(i, name)
# 1 Alice
# 2 Bob
# 3 Charlie

もちろん他の数字からでもOK。

for i, name in enumerate(l, 42):
    print(i, name)
# 42 Alice
# 43 Bob
# 44 Charlie

連番の文字列を作りたい場合に便利。1から始めるためにi+1にしたりするよりはenumerate()関数の第二引数で開始数値を指定したほうがスマートな感じ。

for i, name in enumerate(l, 1):
    print('{:03}_{}'.format(i, name))
# 001_Alice
# 002_Bob
# 003_Charlie

数値のゼロ埋めをしたりするときに使うformat関数については以下の記事参照。

増分(step)を指定

enumerate()関数に増分stepを指定する引数はないが、以下のようにすると実現可能。

step = 3
for i, name in enumerate(l):
    print(i * step, name)
# 0 Alice
# 3 Bob
# 6 Charlie
スポンサーリンク
シェア
このエントリーをはてなブックマークに追加

関連カテゴリー

関連記事