
python如何两个列表同事循环
用户关注问题
如何同时遍历Python中的两个列表?
我有两个列表,想在一个循环中同时访问它们的对应元素,应该怎么操作?
使用zip函数遍历两个列表
可以使用Python内置的zip函数,将两个列表打包成一个元组列表,然后在循环中同时访问对应元素。例如:
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
for item1, item2 in zip(list1, list2):
print(item1, item2)
这样可以同时迭代两个列表的元素。
两个长度不一的列表怎么同时循环?
如果两个列表长度不同,使用zip会漏掉较长列表的元素,有办法解决吗?
使用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替代。
有没有其他方法可以并行迭代两个列表?
除了zip和zip_longest,还有其它方法实现两个列表的并行遍历吗?
使用索引遍历或列表推导式
可以通过索引来遍历两个列表,例如先确定最短列表长度,然后用range循环访问:
min_len = min(len(list1), len(list2))
for i in range(min_len):
print(list1[i], list2[i])
此外,列表推导式也可以结合索引实现平行迭代,但相比zip功能有限且不够优雅。