お困りの方へ
この記事では、組み込み関数の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の仕様書を載せておきます。