今天做作业的时候,碰到了这么一道题,一开始有点看不懂此题的意思,虽然结果跑一遍就出来了,运行结果为[[19, 15], [43, 35]]。
zip之前没接触过,经查询
zip()函数接受一系列可迭代对象作为参数,将不同对象中相对应的元素打包成一个元组(tuple),返回由这些元组组成的list列表,如果传入的参数的长度不等,则返回的list列表的长度和传入参数中最短对象的长度相同。
x = [1,2,3,4,5]
y = ['a','b','c','d']
xy = zip(x,y)
print xy
for a,b in zip(x,y):
print a
print b
[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]
1
a
2
b
3
c
4
d
之后又查询了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 相反,可理解为解压,为zip的逆过程,可用于矩阵的转置
[(1, 2, 3), (4, 5, 6)]
之后就简洁明了了