python如何两个列表同事循环

python如何两个列表同事循环

作者:Joshua Lee发布时间:2026-01-14阅读时长:0 分钟阅读次数:4

用户关注问题

Q
如何同时遍历Python中的两个列表?

我有两个列表,想在一个循环中同时访问它们的对应元素,应该怎么操作?

A

使用zip函数遍历两个列表

可以使用Python内置的zip函数,将两个列表打包成一个元组列表,然后在循环中同时访问对应元素。例如:

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

这样可以同时迭代两个列表的元素。

Q
两个长度不一的列表怎么同时循环?

如果两个列表长度不同,使用zip会漏掉较长列表的元素,有办法解决吗?

A

使用itertools.zip_longest补全短列表

当两个列表长度不同,zip函数会以较短列表长度为准截断。可以借助itertools模块的zip_longest方法,自动补充短列表缺失部分。例如:

from itertools import zip_longest
list1 = [1, 2, 3, 4]
list2 = ['a', 'b']
for item1, item2 in zip_longest(list1, list2, fillvalue=None):
    print(item1, item2)

这样可以保证遍历到较长列表所有元素,缺失部分用fillvalue替代。

Q
有没有其他方法可以并行迭代两个列表?

除了zip和zip_longest,还有其它方法实现两个列表的并行遍历吗?

A

使用索引遍历或列表推导式

可以通过索引来遍历两个列表,例如先确定最短列表长度,然后用range循环访问:

min_len = min(len(list1), len(list2))
for i in range(min_len):
    print(list1[i], list2[i])

此外,列表推导式也可以结合索引实现平行迭代,但相比zip功能有限且不够优雅。