■複数の配列をまとめて処理
・複数の配列から一度に要素を取得
lsA = [1, 2, 3, 4, 5]
lsB = ['a', 'b', 'c', 'd', 'e']
for a, b in zip(lsA, lsB):
print(a, b)
#出力
# 1 a
# 2 b
# 3 c
# 4 d
# 5 e
複数のリストから同時に値を取得
lsA = [1, 2, 3, 4, 5]
lsB = ['a', 'b', 'c', 'd', 'e']
lsC = ['あ', 'い', 'う']
for a, b, c in zip(lsA, lsB, lsC):
print(a, b, c)
#出力
# 1 a あ
# 2 b い
# 3 c う
リストの長さが違う場合、最小の長さで実行される
・最大の長さで実行
from itertools import zip_longest
lsA = [1, 2, 3, 4, 5]
lsB = ['a', 'b', 'c', 'd', 'e']
lsC = ['あ', 'い', 'う']
for a, b, c in zip_longest(lsA, lsB, lsC):
print(a, b, c)
#出力
# 1 a あ
# 2 b い
# 3 c う
# 4 d None
# 5 e None
itertools.zip_longest()を使うと最大の長さで実行される
足りない値は
Noneで補填される
from itertools import zip_longest
lsA = [1, 2, 3, 4, 5]
lsB = ['a', 'b', 'c', 'd', 'e']
lsC = ['あ', 'い', 'う']
for a, b, c in zip_longest(lsA, lsB, lsC, fillvalue='fill'):
print(a, b, c)
#出力
# 1 a あ
# 2 b い
# 3 c う
# 4 d fill
# 5 e fill
fillvalue=で補填する値を指定できる
値は1つのみで、リストごとに別の値を指定することはできない