概要
複数のイテラブルオブジェクトの要素を順次、タプル型でまとめる。又は、for文では、順次、出力する。※通常一番要素の少ないイテラブルに合わせ、打ち切る。
書き方
zip(*iterables, strict=False)
strict:「厳密な設定」の有無。通常falseで厳密にしない。
※strict=True「厳密設定」にすると、各イテラブルの要素数が同一でないと、「ValueError」になる。
ちょこっとメモ
イテラブル (iterable)
for文によって「繰り返すことができる」オブジェクト。※和訳:繰り返し可能な。「繰り返し、取り出す(生成)」操作を行う。
※和訳:繰り返すもの(反復子)
コード
厳密設定
Trrue (デフォルト)
print(list(zip(('a', 'b', 'c'), (1, 2, 3)))) print(list(zip(('a', 'b'), (1, 2, 3)))) print(list(zip(('a', 'b', 'c'), (1, 2))))
表示イメージ
[('a', 1), ('b', 2), ('c', 3)] [('a', 1), ('b', 2)] [('a', 1), ('b', 2)]
False
print(list(zip(('a', 'b', 'c'), (1, 2), strict=True)))
表示イメージ
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-84-693cf0eb2ad2> in <cell line: 4>() 2 print(list(zip(('a', 'b'), (1, 2, 3)))) 3 print(list(zip(('a', 'b', 'c'), (1, 2)))) ----> 4 print(list(zip(('a', 'b', 'c'), (1, 2), strict=True))) ValueError: zip() argument 2 is shorter than argument 1
for文
fruits = ['apple', 'banana', 'peach', 'melon', 'orange'] codelists = list(range(5)) for codelist, fruit in zip(codelists, fruits): print(f'Code: {codelist} {fruit}')
zip()後のリストを元のイテラブルへ戻す。
fruits = ['apple', 'banana', 'peach', 'melon', 'orange'] codelists = list(range(5)) print(list(zip(codelists, fruits))) codelists2, fruits2 = zip(*zip(codelists, fruits)) print(f"fruits2:{fruits2}") print(f"codelists:{codelists2}") fruits == list(fruits2) and codelists == list(codelists2)