【问题标题】:How to iterate in Python through two lists with different length in paralell? [duplicate]如何在 Python 中并行遍历两个不同长度的列表? [复制]
【发布时间】:2018-09-12 20:16:05
【问题描述】:

我有两个列表:

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

【问题讨论】:

    标签: python list for-loop iterator


    【解决方案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                                                        
    

    【讨论】:

    • 哇你忍者(:
    • 哈哈,秒差。 @zeet
    • 谢谢!它工作得很好:)
    【解决方案2】:

    你需要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)]
    

    【讨论】:

      【解决方案3】:

      检查来自itertools 的 zip_longest()(Python 标准库中一个非常有用的模块)

      from itertools import zip_longest
      for l1, l2 in zip_longest(list1, list2, fillvalue=''):
           print(l1,l2)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-04
        • 1970-01-01
        • 2010-12-12
        相关资源
        最近更新 更多