5.4.13Python下zip并行遍历多个序列

Posted by 撒得一地 on 2016年3月24日 in python教程

在Python程序中,可以同时迭代两个序列。比如有下面两个列表:

names = ['jack','peter','psz']
ages = [12,15,17]

如果想要打印名字和对应的年龄,可以像下面这样做:

>>> names = ['jack','peter','psz']
>>> ages = [12,15,17]
>>> for i in range(len(names)):
...     print(names[i],'is',ages[i],'years old')
...
jack is 12 years old
peter is 15 years old
psz is 17 years old

这里i是循环索引的标准变量名。

还可以使用内建的zip函数用来进行并行迭代,可以把两个序列“压缩”在一起,然后返回一个元组的列表:

>>> for (name,age) in zip(names,ages):
...     print(name,'is',age,'years old')
...
jack is 12 years old
peter is 15 years old
psz is 17 years old

在上面的实例中:

>>> zip(names,ages)
#zip(names,ages)等价于[('jack',12),('peter',15),('psz',17)]
<zip object at 0x02420260>

zip函数也可以作用于任意多个序列,这一点在某些情况下非常好用,比如:

>>> a = [1,2,3]
>>> b = [1,2,3]
>>> c = [1,2,3]
>>> for (x,y,z) in zip(a,b,c):
...     print(x,y,z)
...
1 1 1
2 2 2
3 3 3

上面的zip(a,b,c)最后等价于[(1,1,1),(2,2,2),(3,3,3)]。

关于很重要的一点是,zip还可以应付不等长的序列,当最短的序列“用完”的时候就会停止,比如:

>>> a = [1,2,3]
>>> b = [1,2,3,4]
>>> c = [1,2,3,4,5]
>>> for (x,y,z) in zip(a,b,c):
...     print(x,y,z)
...
1 1 1
2 2 2
3 3 3

上一篇:

下一篇:

相关推荐

网站地图|XML地图

Copyright © 2015-2024 技术拉近你我! All rights reserved.
闽ICP备15015576号-1 版权所有©psz.