Pythonにはzip()という関数があり、イテラブルをまとめてくれる便利な関数です。
逆にまとめたものを元に戻したい場合はどうするのでしょうか??
zip()があるからunzip()もあると思うかもしれませんが、おそらくないので自分で実装する必要があります。(unzip()が存在していたら教えてください🙇♂️)
unzipは以下で行うことができます。
zip(*zip(list1, list2, ···))
list1 = ['a','b','c','d']
list2 = [1, 2, 3, 4]
list3 = [4, 5, 6, 7]
print(list(zip(*zip(list1, list2, list3))))
# [('a', 'b', 'c', 'd'), (1, 2, 3, 4), (4, 5, 6, 7)]
unzipの仕組みをイラストにしてみるとこんな感じになると思います。
一つずつ挙動を追ってみると、「なるほど!」ってなるのではないでしょうか。
ちなみにコードでは*がありますが、あれはアンパックする必要があるからです。
(イラストでは省略しています)

実装の方法は公式ドキュメントでも言及されています。
組み込み関数 — Python 3.10.6 ドキュメント
コメント