Pythonのenumerateでfor文をすこし便利にする

お困りの方へ

この記事では、組み込み関数のenumerateの説明をします。

enumerate以前

enumerateを知らない人は、こんなfor文を書いてしまうかもしれません。

カウンタ変数iを定義してカウントアップする部分はenumerateで改善できます。

l = ['apple', 'orange', 'lemon', 'kiwi']
i = 0
for x in l:
    print(f'i:{i} x:{x}')
    i += 1

# i:0 x:apple
# i:1 x:orange
# i:2 x:lemon
# i:3 x:kiwi

enumerate以降

enumerateを使えば、上のコードを5行から3行に削減できます。

l = ['apple', 'orange', 'lemon', 'kiwi']
for i, x in enumerate(l):
    print(f'i:{i} x:{x}')

# i:0 x:apple
# i:1 x:orange
# i:2 x:lemon
# i:3 x:kiwi

enumerate関数には引数startがあります。
カウンタの数字はデフォルトはゼロスタートですが、変えることができます。

l = ['apple', 'orange', 'lemon', 'kiwi']
for i, x in enumerate(l, start=15):
    print(f'i:{i} x:{x}')

# i:15 x:apple
# i:16 x:orange
# i:17 x:lemon
# i:18 x:kiwi

enumerateの使い方としては、listからカウンタをIDキーとした辞書型を作ることもできます。

l = ['apple', 'orange', 'lemon', 'kiwi']
d = {}
for i, x in enumerate(l, start=1):
    d.update({i: x})

print(json.dumps(d, indent=4))

# {
#     "1": "apple",
#     "2": "orange",
#     "3": "lemon",
#     "4": "kiwi"
# }

この記事の補足として、enumerateの仕様書を載せておきます。