zip() --同时迭代多个序列

1、可以使用zip()函数来同时迭代多个序列

xpts = [1, 5, 4, 2, 8, 10]
ypts = [100, 121, 78, 37, 23]
for x, y in zip(xpts, ypts):
    print(x, y)
    
1 100
5 121
4 78
2 37
8 23

zip(a, b)的工作原理是创建出一个迭代器,该迭代器可产生出元组(x, y),这里的x取自序列a, 而y取自序列b。
当其中某个输入序列中没有元素可以继续迭代时,整个迭代过程结束。因此整个迭代的长度和其中最短的输入序列长度相同。

实例如下:

a = [1, 2, 3]
b = ['w', 'x', 'y', 'z']
for i in zip(a, b):
    print(i)
    
(1, 'w')
(2, 'x')
(3, 'y')

2、也可以使用itertools.zip_longest(),可以迭代出较长的序列长度

import itertools
for i in itertools.zip_longest(a, b):
    print(i)
    
(1, 'w')
(2, 'x')
(3, 'y')
(None, 'z')

# 通过fillvalue来填充元素
for i in itertools.zip_longest(a, b, fillvalue=0):
    print(i)
    
(1, 'w')
(2, 'x')
(3, 'y')
(0, 'z')

zip()可以接受多余2个序列作为输入。在这种情况下,得到的结果中元组里的元素数量和输入序列的数量相同。

c = ['m', 'n']
for i in zip(a, b, c):
    print(i)
    
(1, 'w', 'm')
(2, 'x', 'n')
注意:

zip()创建出的结果只是一个迭代器。如果需要将配对的数据保存为列表,那么可以使用list()函数。

print(zip(a, b))
print(list(zip(a, b)))
<zip object at 0x10d82fcc8>
[(1, 'w'), (2, 'x'), (3, 'y')]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值