具有不同长度的列表列表的元素级联
我有一个列表示例列表,例如:
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]