如何取消嵌套列表

时间:2012-08-08 08:22:26

标签: python

  

可能重复:
  Making a flat list out of list of lists in Python

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

例如:

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

转向

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

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

转向

A = [1,2,3,4]

4 个答案:

答案 0 :(得分:38)

使用itertools.chain

  

<强> itertools.chain(*iterables)

     

创建一个迭代器,它返回第一个iterable中的元素,直到它耗尽,然后进入下一个iterable,直到所有的iterables都用完为止。用于将连续序列作为单个序列进行处理。

Example:

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(...))