python内置函数zip
一、简介
zip() 函数用于将可迭代的对象作为参数,主要功能是将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个iterable迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 *
号操作符,可以将元组解压为列表。了解数学中矩阵运算的读者,可以直观地把zip想象成矩阵的转置,每一个可迭代对象都是矩阵的一行,那么运行完一次zip返回的是这个矩阵的各列。
要点:打包成元组,返回列表,如果长度不一致,则与短的iterable对齐
二、详解
语法:zip([iterable, ...])
参数:iterable是一个或者多个可以迭代的对象
三、代码
举例一:将两个列表的元素分别代表x坐标和y坐标,将其分别打包成点的坐标对形式
x = [1, 2, 3]
y = [4, 5, 6]
for i in zip(x, y):
print(i)
(1, 4)
(2, 5)
(3, 6)
举例二:求两个维度相同向量的内积
def innerproduct(vector1, vector2):
return sum([i * j for i, j in zip(vector1, vector2)])
print(innerproduct([1,2,3], [1,2,3]))
14
举例三:关于矩阵的转置
print(list(zip((1, 2, 3), (4, 5, 6), (7, 8, 9))))
print(*zip((1, 2, 3), (4, 5, 6), (7, 8, 9)))
print(list(zip(*zip((1, 2, 3), (4, 5, 6), (7, 8, 9)))))
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
(1, 4, 7) (2, 5, 8) (3, 6, 9)
[(1, 2, 3), (4, 5, 6), (7, 8, 9)]