Python:可填充最长长度的类似zip的函数?

发布于 2021-02-02 23:16:01

是否有一个内置功能可以像这样工作,zip()但是会填充结果,以便结果列表的长度是最长输入而不是最短输入的长度?

>>> a=['a1']
>>> b=['b1','b2','b3']
>>> c=['c1','c2']

>>> zip(a,b,c)
[('a1', 'b1', 'c1')]

>>> What command goes here?
[('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
关注者
0
被浏览
123
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    在Python 3中,你可以使用 itertools.zip_longest

    >>> list(itertools.zip_longest(a, b, c))
    [('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
    

    你可以None使用与fillvalue参数不同的值进行填充:

    >>> list(itertools.zip_longest(a, b, c, fillvalue='foo'))
    [('a1', 'b1', 'c1'), ('foo', 'b2', 'c2'), ('foo', 'b3', 'foo')]
    

    使用Python 2,你既可以使用itertools.izip_longest(Python的2.6+),也可以使用map与None。这是的鲜为人知的功能map(但map在Python 3.x中有所更改,因此仅在Python 2.x中有效)。

    >>> map(None, a, b, c)
    [('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看