我有两个清单:
list1=[1,2,3]
list2=[4,5,6,7]
我想迭代它们。我想要获得的是类似的东西:
1,4
2,5
3,6
,7
我曾考虑使用zip
函数,但它似乎不能使用不同的长度列表,因为使用以下代码:
for l1, l2 in list1, list2:
print(l1,l2)
我明白了:
1,4
2,5
3,6
所以缺少7号。我想知道我怎么能适应代码或如果 当列表长度不同时,我还缺少任何其他选项来并行迭代?
答案 0 :(得分:1)
我认为你需要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
更具体地针对您的问题,请将fillvalue
与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
答案 1 :(得分:1)
您需要zip_longest
:
>>> from itertools import zip_longest
>>> a = [1,2,3]
>>> b = [4,5,6,7]
>>> list(zip_longest(a, b))
[(1, 4), (2, 5), (3, 6), (None, 7)]
答案 2 :(得分:0)
从itertools检查zip_longest()(Python标准库中非常有用的模块)
from itertools import zip_longest
for l1, l2 in zip_longest(list1, list2, fillvalue=''):
print(l1,l2)