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')]
网友评论