可能的复制品: 在 Python 中根据列表列表制作一个平面列表
我试图找到一种简单的方法,将多维(嵌套的) python 列表转换为包含子列表所有元素的单个列表。
例如:
A = [[1,2,3,4,5]]
转向
A = [1,2,3,4,5]
或者
A = [[1,2], [3,4]]
A = [1,2,3,4]
使用 reduce函数
reduce
reduce(lambda x, y: x + y, A, [])
或者 sum
sum
sum(A, [])
第一种情况也可以很容易地做到:
A=A[0]
itertools为此提供了 链子函数:
itertools
来自 http://docs.python.org/library/itertools.html#recipes:
def flatten(listOfLists): "Flatten one level of nesting" return chain.from_iterable(listOfLists)
注意,结果是可迭代的,因此您可能需要 list(flatten(...))。
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]