有没有快速解开列表中元素的方法? 例如: 给定
list = [[1,2,3],[4,2],2,1,3]
我们将:
list = [1,2,3,4,2,2,1,3]
答案 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]