Python
zip
for
enumerate

Python zipとenumerateの使い方

python2.Xの記事を見つけてpython3.Xでも動作確認したので備忘録として書いてます

準備

list.py
a = ['あ','い','う','え','お']
b = ['か','き','く','け','こ']

例えばこういうリストがあったとする。

enumerate

enumerate.py
for i,ai in enumerate(a):
  print(i,ai)

とすると

実行結果
0 あ
1 い
2 う
3 え
4 お

こんな感じになる

zip

zip.py
for ai,bi in zip(a,b):
  print(ai,bi)

とすると

実行結果
あ か
い き
う く
え け
お こ

こんな感じ。ちなみに3つ以上のリストも同様にしてまとめられる。

enumerate & zip

enumerateとzipを同時に使いたいときに

error.py
for i,ai,bi in enumerate(zip(a,b)):
  print(i,ai,bi)

このように書くとエラーを起こした。

実行結果
ValueError: not enough values to unpack (expected 3, got 2)

で、何か方法はないかと調べた結果、下のようにすればよいらしい。

success.py
for i,(ai,bi) in enumerate(zip(a,b)): #zipのところを()で囲った
  print(i,ai,bi)
実行結果
0 あ か
1 い き
2 う く
3 え け
4 お こ

参考

https://www.saltycrane.com/blog/2008/04/how-to-use-pythons-enumerate-and-zip-to/