如何在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']]