python内置函数——zip

描述

zip函数可以将多个序列(列表、元组、字典、集合、字符串以及 range() 区间构成的列表)“压缩”成一个 zip 对象。所谓“压缩”,其实就是将这些序列中对应位置的元素重新组合,生成一个个新的元组。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

语法

zip([iterable, …], [iterable, …])

参数解释

[iterable, …], [iterable, …]:表示一个或多个迭代器

示例

示例1 zip压缩多个列表

>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b)     # 打包为元组的列表
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c)              # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped)          # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]

示例2 zip压缩多个字符串

>>>strs1 = "flower"
>>>strs2 = "flow"
>>>strs3 = "flight"
>>>print(list(zip(strs1, strs2)))
>>>print(list(zip(strs2, strs3)))
[('f', 'f'), ('l', 'l'), ('o', 'o'), ('w', 'w')]
[('f', 'f'), ('l', 'l'), ('o', 'i'), ('w', 'g')]

示例3 zip(*)

>>>strs = ["flower", "flow", "flight"]
>>>print(list(zip(*strs))) 
[('f', 'f', 'f'), ('l', 'l', 'l'), ('o', 'o', 'i'), ('w', 'w', 'g')]

示例4 利用zip(*)返回矩阵每列的最大值

# 返回矩阵的行列最大值
grid = [[3,0,8,4],[2,4,5,7],[9,2,6,3],[0,3,1,0]]
rowMax = list(map(max, grid))  #返回[8,7,9,3]
colMax = list(map(max, zip(*grid)))  #返回[9,4,8,7]

map函数用

猜你喜欢

转载自blog.csdn.net/LiuXF93/article/details/121903741