TIL

Today I Learned. 知ったこと、学んだことを書いていく

forでindexと要素を取得する enumerate() - Python

forで要素とその要素のインデックス番号を取得したいときにはenumerate()関数を使う。

>>> for i, fruit in enumerate(['apple', 'banana', 'peach']):
...     i, fruit
...
(0, 'apple')
(1, 'banana')
(2, 'peach')

受け取る側の1つ目の変数にインデックス番号、2つ目の変数に要素の値が格納される。

enumerate()関数すごい!!

また、第2引数のstartでインデックスの数値の開始を指定することもできる。デフォルトでは0になっている。

>>> for i, fruit in enumerate(['apple', 'banana', 'peach'], start=1):
...     i, fruit
...
(1, 'apple')
(2, 'banana')
(3, 'peach')


zip()関数と組み合わせることもできる。

>>> days = ['月曜日', '火曜日', '水曜日']
>>> fruits = ['バナナ', 'オレンジ', 'リンゴ']
>>> for i, (day, fruit) in enumerate(zip(days, fruits)):
...     i, day, fruit
...
(0, '月曜日', 'バナナ')
(1, '火曜日', 'オレンジ')
(2, '水曜日', 'リンゴ')

zip()での格納先が(day, fruit)、enumerate()の格納先がi, {zip()の結果}となっていることに注意する。zipについてはここ

enumerate()はただ単にインデックスとイテレータを返していると考えられるため、以下のようにするとエラーになる。

>>> for i, day, fruit in enumerate(zip(days, fruits)):
...     i, day, fruit
...
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: not enough values to unpack (expected 3, got 2)



参考文献