複数のリストについてそれぞれの要素の1番目を全部、2番目を全部…という順番で取り出したい
概要
forを使うとき
for i,j,k in zip(リスト1,リスト2,リスト3):
のような書き方で
aList[0],bList[0],cList[0],aList[1],bList[1],cList[1],aList[2]…
のような順番で取り出せる。
わかりにくいので例で示す。
例
aList = ["aa","bb","cc"]
bList = ["aaa","bbb","ccc","ddd","eee"]
cList = ["aaaa","bbbb"]
for i,j,k in zip(aList,bList,cList):
print(i)
print(j)
print(k)
出力
aa
aaa
aaaa
bb
bbb
bbbb
説明
iがaListに相当
jがbListに相当
kがcListに相当
しており
forの第1回目のループでは
print(aList[0])
print(bList[0])
print(cList[0])
forの第2回目のループでは
print(aList[1])
print(bList[1])
print(cList[1])
となる。
forは3回以上はループしない。
3回目のループではcList[2]の要素がないため不可能となるため。
間違えやすい問題
for i,j in zip(aList,bList,cList):
print(i)
print(j)
はエラーとなる。
for 〇,〇 in zip(△,△):
の〇と△の数は必ず同じでなければならず、同じでないとエラーになる。
以下はエラーにならない。
aList = ["aa","bb","cc"]
bList = ["aaa","bbb","ccc","ddd","eee"]
cList = ["aaaa","bbbb"]
for i,j,k in zip(aList,bList,cList):
print(i)
print(j)
出力は
aa
aaa
bb
bbb
となる