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

浙公网安备 33010602011771号