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