CSDN
上有一份很全的总结,本文只是从中摘录了一些简单的实例, 感兴趣的读者可以去看原文: python zip 的高阶应用
首先贴一下 Python
菜鸟教程中对 zip
函数的说明:
- 实例1 : 合并两个列表
in:
list1 = [1,2,3]
list2 = [4,5,6]
zip(list1,list2)
out:
注意: zip
方法在Python 2
和Python 3
中的不同:在Python 3.x
中为了减少内存,zip()
返回的是一个迭代对象。如需展示列表,需手动list()
转换。
in:
list(zip(list1,list2))
out:
[(1, 4), (2, 5), (3, 6)]
- 实例2 : 将两个列表合并成字典
in:
keys = ['width','height','weight']
values = [100,200,50]
dict(zip(keys,values))
out:
{'width': 100, 'height': 200, 'weight': 50}
- 实例3:使用 * 操作符解包嵌套列表,并将内层列表打包
in:
list3 = [[1,2,3],[4,5,6]]
list(zip(list3))
out:
[([1, 2, 3],), ([4, 5, 6],)] # 不是期望输出
in:
list(zip(*list3))
out:
[(1, 4), (2, 5), (3, 6)]
补充:
发现 [(1, 4), (2, 5), (3, 6)]
中每个元素是元组,而非列表,所以可以用 map()
函数将每个元素转化回列表
in:
list(map(list, list(zip(*list3))))
out:
[[1, 4], [2, 5], [3, 6]]
- 实例:4:矩阵转置
in:
matrix = [ [1,2,3,4],
[5,1,2,3],
[9,5,1,2],
[4,9,5,1],
[7,4,9,5]]
list(map(list,list(zip(*matrix))))
out:
[[1, 5, 9, 4, 7],
[2, 1, 5, 9, 4],
[3, 2, 1, 5, 9],
[4, 3, 2, 1, 5]]