如何解除嵌套列表的嵌套

可能的复制品:
在 Python 中根据列表列表制作一个平面列表

我试图找到一种简单的方法,将多维(嵌套的) python 列表转换为包含子列表所有元素的单个列表。

例如:

A = [[1,2,3,4,5]]

转向

A = [1,2,3,4,5]

或者

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

转向

A = [1,2,3,4]
177550 次浏览

使用 reduce函数

reduce(lambda x, y: x + y, A, [])

或者 sum

sum(A, [])

第一种情况也可以很容易地做到:

A=A[0]

itertools为此提供了 链子函数:

来自 http://docs.python.org/library/itertools.html#recipes:

def flatten(listOfLists):
"Flatten one level of nesting"
return chain.from_iterable(listOfLists)

注意,结果是可迭代的,因此您可能需要 list(flatten(...))

使用 Itertools.chain:

返回文章页面

创建一个迭代器,从第一个迭代器返回元素,直到它用尽,然后继续到下一个迭代器,直到所有的迭代器都用尽。用于将连续序列作为单个序列处理。

例如:

from itertools import chain


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


print list(chain(*A))
# or better: (available since Python 2.6)
print list(chain.from_iterable(A))

输出结果是:

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