python如何實現unzip方法?


背景

使用Python內建的zip函數可以對長度相同的list進行組合

>>> zip([1,2,3],[4,5,6])
[(1, 4), (2, 5), (3, 6)]

注意Python 3會返回zip object需要list()顯式轉換。

疑問

如何將[(1, 4), (2, 5), (3, 6)]恢復為[[1,2,3],[4,5,6]]

實現

顯然Python並沒有提供unzip()方法,可通過繼續調用zip()實現解壓

>>> zip((1, 4), (2, 5), (3, 6))
[(1, 2, 3), (4, 5, 6)]

看似很奇怪,本質上還是zip()操作,返回列表的子列表長度取決於zip()傳入參數的個數
因此再次操作即可實現unzip

進階

使用函數入參的*args將列表轉化為獨立的參數輸入zip()使得調用更加簡潔

>>> r=zip([1,2,3],[4,5,6])
>>> r
[(1, 4), (2, 5), (3, 6)]
>>> zip(*r)
[(1, 2, 3), (4, 5, 6)]

參考

python - How to unzip a list of tuples into individual lists? - Stack Overflow


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM