【问题标题】:Python, How to zip unequal sized list, if one list 's length less than another, than fill None [duplicate]Python,如何压缩大小不等的列表,如果一个列表的长度小于另一个,则填充无 [重复]
【发布时间】:2020-09-15 07:22:27
【问题描述】:

例如,我想压缩两个不同大小的列表:

list1=[1,2,3]
list2=[1,2,3,4]

# zip the two list will be [(1,1),(2,2),(3,3)]
zip(list1, list2)

我想要的是:

[(1,1),(2,2),(3,3),(None,4)]

有没有什么简单的方法可以做到这一点?

【问题讨论】:

标签: python


【解决方案1】:

在 itertools 中有 zip_longest 可以做到这一点:

>>> from itertools import zip_longest
>>> list(zip_longest(range(1,4), range(1,5)))
[(1, 1), (2, 2), (3, 3), (None, 4)] 

【讨论】:

    【解决方案2】:

    这个:

    list1=[1,2,3]
    list2=[1,2,3,4]
    
    for _ in range(len(list2)-len(list1)): list1.append(None)
    
    print(list(zip(list1, list2)))
    

    输出:

    [(1, 1), (2, 2), (3, 3), (None, 4)]
    

    【讨论】:

      【解决方案3】:

      我想你想要itertools.zip_longest

      >>> list1=[1,2,3]
      >>> list2=[1,2,3,4]
      >>> import itertools
      >>> list(itertools.zip_longest(list1, list2))
      [(1, 1), (2, 2), (3, 3), (None, 4)]
      
      

      【讨论】:

        猜你喜欢
        • 2022-08-09
        • 2012-07-04
        • 1970-01-01
        • 2013-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-27
        相关资源
        最近更新 更多