我试图找到一种简单的方法将多维(嵌套)python列表转换为单个列表,其中包含子列表的所有元素。
例如:
A = [[1,2,3,4,5]]
转向
A = [1,2,3,4,5]
或
A = [[1,2], [3,4]]
转向
A = [1,2,3,4]
答案 0 :(得分:38)
<强>
itertools.chain(*iterables)
强>创建一个迭代器,它返回第一个iterable中的元素,直到它耗尽,然后进入下一个iterable,直到所有的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]
答案 1 :(得分:25)
使用reduce
功能
reduce(lambda x, y: x + y, A, [])
或sum
sum(A, [])
答案 2 :(得分:7)
第一种情况也可以轻松完成:
A=A[0]
答案 3 :(得分:3)
itertools
为此提供了chain功能:
来自http://docs.python.org/library/itertools.html#recipes:
def flatten(listOfLists):
"Flatten one level of nesting"
return chain.from_iterable(listOfLists)
请注意,结果是可迭代的,因此您可能需要list(flatten(...))
。