如何通过两个不同长度的列表在Python中迭代Python?

时间:2018-04-03 13:20:09

标签: python list for-loop iterator

我有两个清单:

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号。我想知道我怎么能适应代码或如果 当列表长度不同时,我还缺少任何其他选项来并行迭代?

3 个答案:

答案 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                                                      

更具体地针对您的问题,请将fillvaluezip_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)