如何在Python中并行遍历两个长度不同的列表?

mar*_*isa 0 python iterator for-loop list

我有两个清单:

list1=[1,2,3]
list2=[4,5,6,7]
Run Code Online (Sandbox Code Playgroud)

我想迭代它们。我想获得的是类似的东西:

1,4
2,5
3,6
 ,7
Run Code Online (Sandbox Code Playgroud)

我曾想过使用该zip函数,但它似乎不适用于不同长度的列表,如使用以下代码:

for l1, l2 in list1, list2:
     print(l1,l2)
Run Code Online (Sandbox Code Playgroud)

我明白了:

1,4
2,5
3,6
Run Code Online (Sandbox Code Playgroud)

所以数字 7 不见了。我想知道如何调整代码,或者当列表的长度不同时,我是否缺少任何其他选项来并行迭代?

Aus*_*tin 5

我认为你需要zip_longest

from itertools import zip_longest
list1=[1,2,3]
list2=[4,5,6,7]
for l1, l2 in zip_longest(list1, list2):
     print(l1,l2)
# 1 4
# 2 5                                                        
# 3 6                                                         
# None 7                                                      
Run Code Online (Sandbox Code Playgroud)

更具体地针对您的问题,请使用fillvaluewith zip_longest

from itertools import zip_longest
list1=[1,2,3]
list2=[4,5,6,7]
for l1, l2 in zip_longest(list1, list2, fillvalue=' '):
     print(l1,l2)
# 1 4
# 2 5                                                         
# 3 6                                                         
#   7                                                        
Run Code Online (Sandbox Code Playgroud)