Python 如何取消嵌套列表的嵌套

Python 如何取消嵌套列表的嵌套,python,Python,可能重复: 我试图找到一种简单的方法,将多维(嵌套)python列表转换为包含子列表所有元素的单个列表 例如: A = [[1,2,3,4,5]] 转向 A = [1,2,3,4,5] A = [1,2,3,4] 或 转向 A = [1,2,3,4,5] A = [1,2,3,4] 使用reduce功能 reduce(lambda x, y: x + y, A, []) 或sum sum(A, []) 第一种情况也可以通过以下方式轻松完成: A=A[0] itertools提供

可能重复:

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

例如:

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

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

转向

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

使用
reduce
功能

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

sum(A, [])

第一种情况也可以通过以下方式轻松完成:

A=A[0]

itertools
提供了以下功能:

发件人:

请注意,结果是可编辑的,因此您可能需要
列表(展平(…)

使用:

itertools.chain(*iterables)

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

输出为:

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

[子列表中的项目对应于子列表中的项目]
。这是许多其他问题的重复。例如,请参见和。@zrxq这不是那个问题,但它与ChrisIt提到的问题是重复的。澄清列表中的所有对象都必须是列表本身非常有用。例如,如果“A=['year',[1]]”,那么“chain”将不会产生预期的结果。它需要'A=['year'],[1]]'。@msh855字符串也是一个iterable。所以,在这种情况下,这似乎更多的是一个与期望有关的问题,而不是与结果有关的问题。你是否尝试过,或者确实是一个期望的问题?。我尝试了以下方法:A=['year',[1,2,'bad']]list(chain(*A))list(chain.from_iterable(A))并生成:Out[153]:['y','e','A','r',1,2,'bad']传递两个iterable,这两个iterable都是迭代的。第一个生成字符串中的字符,第二个生成列表元素。如果需要不同的行为,可能需要编写特定的代码。
reduce
在Python 3中被删除。
sum
版本有效,但
itertools.chain
方法更快。OP写道
[[1,2],[3,4]
应该变成
[1,2,3,4]
。您的解决方案返回
[1,2]
[1, 2, 3, 4]
[1, 2, 3, 4]