zip()したものを元に戻すunzipのやり方

pythonのunzipの記事のアイキャッチPython

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.0b2 ドキュメント

コメント

タイトルとURLをコピーしました