📜  Python|一次迭代两个列表(1)

📅  最后修改于: 2023-12-03 15:34:17.573000             🧑  作者: Mango

Python | 一次迭代两个列表

在开发Python应用程序时,通常需要同时遍历多个列表。Python有多种方法可以实现这一目的。在本文中,我们将讨论一种简单的方法来一次迭代两个或多个列表。

传统方法

使用传统的方法,您需要使用for循环来每次遍历一个列表。假设我们有两个列表,a和b。

a = [1,2,3]
b = [4,5,6]
for i in range(len(a)):
    print(a[i], b[i])

输出:

1 4
2 5
3 6
使用zip函数

Python中的“zip”函数允许您将多个列表作为参数,并将它们打包在一起。返回的结果为一个元组列表,每个元组包括来自每个输入列表的同一索引位置的元素。

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

输出:

1 4
2 5
3 6

Zip函数可以处理不定数量的列表,只需在函数中提供需要合并的列表。

a = [1, 2, 3]
b = ['a', 'b', 'c']
c = [7, 8, 9]
for x, y, z in zip(a, b, c):
    print(x, y, z)

输出:

1 a 7
2 b 8
3 c 9
使用itertools.zip_longest函数

有时,两个列表的长度不相等。在这种情况下,zip函数将在最短列表结束后停止。如果您希望在处理不同长度的列表时继续进行迭代,则可以使用itertools.zip_longest函数。

from itertools import zip_longest
a = [1, 2, 3]
b = ['a', 'b']
for x, y in zip_longest(a, b):
    print(x, y)

输出:

1 a
2 b
3 None

通过在zip_longest函数中指定“fillvalue”参数,可以用所需的任何填充值替换缺失的值。

from itertools import zip_longest
a = [1, 2, 3]
b = ['a', 'b']
for x, y in zip_longest(a, b, fillvalue=0):
    print(x, y)

输出:

1 a
2 b
3 0
总结

在遍历多个列表时,使用代码更少且更清晰的zip函数或itertools.zip_longest函数。 这种方法提高了代码的阅读性,可读性和可维护性。