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 不见了。我想知道如何调整代码,或者当列表的长度不同时,我是否缺少任何其他选项来并行迭代?
我认为你需要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)