Python Cookbook 4.11 同时迭代多个序列

对于两个,或多个具有相同个数的列表,我们想要同步,对应地获取其中的元素,可以用到 zip 函数。

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
list3 = ['x', 'y', 'z']

for item1, item2 in zip(list1, list2):
    print(item1, item2)
    
1 a
2 b
3 c

如果是三个列表进行同步呢,也可以:

for item1, item2, item3 in zip(list1, list2, list3):
    print(item1, item2, item3)
    
1 a x
2 b y
3 c z

其实也不用在 for 循环里就进行赋值,因为迭代的结果是一个元组,可以取出来以后在循环里复制。

for result in zip(list1, list2, list3):
    print(result)
    
(1, 'a', 'x')
(2, 'b', 'y')
(3, 'c', 'z')

列表长短不一致
以上是列表的长度都是一致的,进行迭代的序列长度不一致,那么到了短的序列末尾就会停止迭代,示例如下:

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c', 'd']


for item1, item2 in zip(list1, list2):
    print(item1, item2)
    
1 a
2 b
3 c

可以看到之后的元素就没有再进行迭代了。
如果想要取出长的序列之后的元素,可以使用 itertools_longest()

from itertools import zip_longest

for item1, item2 in zip_longest(list1, list2):
    print(item1, item2)
    
1 a
2 b
3 c
None d

但是之后返回的结果就是 None 了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值