具有不同长度的列表列表的元素级联

我有一个列表示例列表,例如:

lol = [[1,2,3,4],[5,6],[7,8,9,0,11],[21]]

预期的组合列表是:

cl = [1,5,7,21,2,6,8,3,9,4,0,11]

有没有一种优雅的方法可以最好地不使用嵌套的 for 循环?

回答

您可以使用itertools.zip_longest

from itertools import zip_longest

lol = [[1, 2, 3, 4], [5, 6], [7, 8, 9, 0, 11], [21]]

out = [i for v in zip_longest(*lol) for i in v if not i is None]
print(out)

印刷:

[1, 5, 7, 21, 2, 6, 8, 3, 9, 4, 0, 11]


以上是具有不同长度的列表列表的元素级联的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>