Python zip函数的多参数用法
zip函数我个人是这么理解的,假如有多个参数,每个参数都是一个列表,列表可以不等长,那么我把每个列表看成一根葱,我现在要切葱花,把这一根根的葱从上到下叠在一起,头部对齐,用菜刀一刀一刀从前往后切。切到最短的一根葱没了为止。其它没切完的葱就不要了。最终得到每一刀从上到下的葱花,这每一刀的葱花本身是一个迭代器,需要循环读取。
a=[1,2,3,4,5]
b=[1,2,3,4]
c=[1,2,3,4]
result=zip(a,b,c)
print(result)
cut=1
for i in result:
print('第{}刀:'.format(cut),i)
cut+=1
#结果可知没有第5刀,只有4刀
<zip object at 0x0000019516C21988>
第1刀: (1, 1, 1)
第2刀: (2, 2, 2)
第3刀: (3, 3, 3)
第4刀: (4, 4, 4)
需要注意的一点是,当zip传参时,想用1个参数代替多个多个参数需要使用*parm格式:
a=[1,2,3,4,5]
b=[1,2,3,4]
c=[1,2,3,4]
# result=zip(a,b,c)
d=[a,b,c]
result=zip(*d) #或者result=zip(*(a,b,c))
print(result)
cut=1
for i in result:
print('第{}刀:'.format(cut),i)
cut+=1
#结果是一样的。
额外提一点,tensorflow里的Dataset.zip((x,y))有点类似zip(*(x,y))的效果