Python 中的 zip 用法

CSDN 上有一份很全的总结,本文只是从中摘录了一些简单的实例, 感兴趣的读者可以去看原文: python zip 的高阶应用

首先贴一下 Python菜鸟教程中对 zip 函数的说明:

Python 中的 zip 用法_第1张图片

  • 实例1合并两个列表
in: 
 list1 = [1,2,3]
 list2 = [4,5,6]
 zip(list1,list2)

out:

注意: zip 方法在Python 2Python 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]]

你可能感兴趣的:(Python 中的 zip 用法)