Python - "取消列表"列表中的嵌套元素

时间:2018-04-11 10:43:07

标签: python list

有没有快速解开列表中元素的方法? 例如: 给定

list = [[1,2,3],[4,2],2,1,3]

我们将:

list = [1,2,3,4,2,2,1,3]

2 个答案:

答案 0 :(得分:2)

您可以在将任何非列表值转换为列表后使用列表推导:

l = [[1,2,3],[4,2],2,1,3]
new_l = [i for b in map(lambda x:[x] if not isinstance(x, list) else x, l) for i in b]

输出:

[1, 2, 3, 4, 2, 2, 1, 3]

编辑:对于嵌套级别,您可以使用带有生成器表达式的递归:

def flatten(d):
 v = [[i] if not isinstance(i, list) else flatten(i) for i in d]
 return [i for b in v for i in b]

打印(变平(L) 输出:

[1, 2, 3, 4, 2, 2, 1, 3]

答案 1 :(得分:0)

您可以使用itertool.chain

from itertools import chain

lst = [[1,2,3],[4,2],2,1,3]

res = list(chain.from_iterable(i if isinstance(i, list) else [i] for i in lst))

# [1, 2, 3, 4, 2, 2, 1, 3]