zipの逆

zipの逆はunzipだろJK

というのはもちろん冗談。zipは二回適用するともとに戻る。

>>> zip([1, 2, 3], [4, 5, 6])
[(1, 4), (2, 5), (3, 6)]
>>> zip(*_)
[(1, 2, 3), (4, 5, 6)]
>>> zip([1, 2, 3], [4, 5, 6], [7, 8, 9])
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
>>> zip(*_)
[(1, 2, 3), (4, 5, 6), (7, 8, 9)]

ただし「もとがリストだったかタプルだったか、はたまた文字列だったのか」という情報は失われる。最初のzipの時点で失われているのでこれが嫌なら型の情報を保存するzipを作る必要がある。そういうニーズがどういうときにあるのかわからないけど。

>>> zip("abc", ["+", "-"])
[('a', '+'), ('b', '-')]