这是你可以使用的东西。 (使用list(izip_longest(...))
对于 Py2x)
>>> from itertools import chain
>>> from itertools import zip_longest
>>> list(filter(lambda x: x != '', chain.from_iterable(zip_longest(x, y, fillvalue = ''))))
[0, 3, 1, 4, 2]
这适用于任意长度的列表,如下所示 -
>>> x = [0, 1, 2, 3, 4]
>>> y = [5, 6]
>>> list(filter(lambda x: x != '', chain.from_iterable(zip_longest(x, y, fillvalue = ''))))
[0, 5, 1, 6, 2, 3, 4]
关于它正在工作的解释 -
-
zip_longest(...)
使用填充值压缩列表并为不等长度的迭代填充给定的填充值。因此,对于您最初的示例,它的计算结果类似于[(0, 3), (1, 4), (2, '')]
- 我们需要展平结果,因为该方法为我们提供了一个元组列表。为此我们使用
chain.from_iterable(...)
给我们类似的东西[0, 3, 1, 4, 2, '']
.
- 我们现在使用
filter(...)
删除所有出现的''
我们得到了所需的答案。