小能豆

是否有类似 zip 的函数可以填充到最长长度?

javascript

是否有一个内置函数可以正常工作,但它会填充结果,以便结果列表的长度是最长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)]

阅读 53

收藏
2024-07-11

共1个答案

小能豆

Python 中没有一个内置函数可以直接实现这种效果,但是你可以使用 itertools.zip_longest 函数来实现这一点。这个函数会将输入列表进行填充,使得结果列表的长度是最长输入的长度。

以下是如何使用 itertools.zip_longest 来达到你想要的效果:

from itertools import zip_longest

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

result = list(zip_longest(a, b, c))

print(result)

这将会输出:

[('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]

解释:
- zip_longest(a, b, c) 将输入列表进行压缩,如果列表长度不一致,较短的列表将用 None(或指定的填充值)进行填充,以确保结果列表的长度是最长输入列表的长度。
- list()zip_longest 返回的迭代器转换为列表。

2024-07-11