可能重复:
从 Python 中的列表列表中制作一个平面列表
我试图找到一种简单的方法将多维(嵌套)python 列表转换为单个列表,其中包含子列表的所有元素。
例如:
A = [[1,2,3,4,5]]
转向
A = [1,2,3,4,5]
或者
A = [[1,2], [3,4]]
转向
A = [1,2,3,4]
可能重复:
从 Python 中的列表列表中制作一个平面列表
我试图找到一种简单的方法将多维(嵌套)python 列表转换为单个列表,其中包含子列表的所有元素。
例如:
A = [[1,2,3,4,5]]
转向
A = [1,2,3,4,5]
或者
A = [[1,2], [3,4]]
转向
A = [1,2,3,4]
itertools.chain(*iterables)
:创建一个迭代器,从第一个迭代器返回元素,直到它用尽,然后继续到下一个迭代器,直到所有的迭代器都用尽。用于将连续序列视为单个序列。
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]
使用reduce
功能
reduce(lambda x, y: x + y, A, [])
或者sum
sum(A, [])
第一种情况也可以很容易地完成:
A=A[0]
itertools
provides the chain function for that:
From http://docs.python.org/library/itertools.html#recipes:
def flatten(listOfLists):
"Flatten one level of nesting"
return chain.from_iterable(listOfLists)
Note that the result is an iterable, so you may need list(flatten(...))
.