如何在python中展平一层列表列表?

如何在python中展平一层列表列表?,python,Python,我的表格结构如下: lst= [[['A'], ['B'], ['C']], [['A'], ['B'], ['D'], ['E']], [['B'], ['C']]] 我希望折叠列表的最内层,以便获得以下结构: lst= [['A', 'B', 'C'], ['A', 'B', 'D', 'E'], ['B', 'C']] 我已尝试通过以下操作将列表展平: [item for sublst in lst for item in sublst] 但这会将所有层折叠为一维列表 解决这一问题的

我的表格结构如下:

lst= [[['A'], ['B'], ['C']], [['A'], ['B'], ['D'], ['E']], [['B'], ['C']]]
我希望折叠列表的最内层,以便获得以下结构:

lst= [['A', 'B', 'C'], ['A', 'B', 'D', 'E'], ['B', 'C']]
我已尝试通过以下操作将列表展平:

[item for sublst in lst for item in sublst]
但这会将所有层折叠为一维列表


解决这一问题的最佳方法是什么?

您需要迭代子列表并对其编制索引以获得所需的输出(但这假设您的内部列表只包含一个元素):

或者,您可以使用from
itertools
(现在它可以处理内部列表中任意数量的元素):

您需要展平
lst
的元素,而不是
lst
本身

因此,在另一个列表理解中使用双循环列表理解,其中外部理解在顶级列表中迭代:

[[item for inner in sublst for item in inner] for sublst in lst]
由于最内部的列表每个仅包含一个元素,因此您还可以使用索引来获取这些值:

[[inner[0] for inner in sublst] for sublst in lst]
演示:

[[item for inner in sublst for item in inner] for sublst in lst]
[[inner[0] for inner in sublst] for sublst in lst]
>>> lst = [[['A'], ['B'], ['C']], [['A'], ['B'], ['D'], ['E']], [['B'], ['C']]]
>>> [[item for inner in sublst for item in inner] for sublst in lst]
[['A', 'B', 'C'], ['A', 'B', 'D', 'E'], ['B', 'C']]
>>> [[inner[0] for inner in sublst] for sublst in lst]
[['A', 'B', 'C'], ['A', 'B', 'D', 'E'], ['B', 'C']]