如何在 Python 中将列表的列表展平为一个扁平列表?


嵌套列表是指其元素本身也是列表的列表。

例如:[[1,2,3], [4,5,6], [7,8,9]] 是一个嵌套列表,因为它有 3 个列表([1,2,3]、[4, 5, 6] 和 [7, 8, 9])作为其元素。

展平列表的列表(嵌套列表),即将其转换为一维列表,有多种方法,例如嵌套 for 循环、列表推导式、内置函数或通过在 Python 中导入库。

在本文中,我们将讨论以上在 Python 中展平列表的方法。

使用 for 循环

要重复遍历序列,请使用 for 循环(即列表、元组、字典、集合或字符串)。此功能更类似于在其他面向对象编程语言中看到的迭代器方法,并且不太像在其他编程语言中找到的 for 关键字。

示例

在以下示例代码中,我们必须将嵌套列表转换为扁平列表,即单个一维列表。因此,我们使用了append()方法将元素添加到列表中。

def flatlist(l): flat_list = [] for element in l: if type(element) is list: for item in element: flat_list.append(item) else: lat_list.append(element) return flat_list lst = [[10, 20, 30, 40], [50, 60, 70], [80, 90, 100]] print('Original List', lst) print('Flattend List', flatlist(lst))

输出

执行上述程序后,将获得以下输出。

Original List [[10, 20, 30, 40], [50, 60, 70], [80, 90, 100]]
Flattend List [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

使用列表推导式

Python 的列表推导式功能使从现有列表构建新列表变得简单。它提供了一种更简洁的语法,用于从现有列表及其值构建新列表。

示例

在此示例中,嵌套列表使用列表推导式方法转换为单个一维列表。

original_list = [[10, 20, 30, 40], [50, 60, 70], [80, 90]] flat_list = [item for sublist in original_list for item in sublist] print('Original list', original_list) print('Flattend list', flat_list)

输出

执行上述程序后,将获得以下输出。

 Original list [[10, 20, 30, 40], [50, 60, 70], [80, 90]]
Flattend list [10, 20, 30, 40, 50, 60, 70, 80, 90]

使用 NumPy 库

NumPy 是一个用于处理数组的通用包。它提供了一个多维数组对象,具有极快的速度以及与这些数组交互的功能。

示例

在下面的示例中,我们使用了 NumPy 库及其中的其他方法。这些方法如下所述。

  • concatenate()函数用于连接一系列数组。

  • flat()函数用作 N 维数组上的一维迭代器。

import numpy originallist = [[10, 20, 30, 40], [50, 60, 70], [80, 90]] flatlist = list(numpy.concatenate(originallist).flat) print('Original list', originallist) print('Transformed list', flatlist)

输出

执行上述程序后,将获得以下输出。

Original list [[10, 20, 30, 40], [50, 60, 70], [80, 90]]
Transformed list [10, 20, 30, 40, 50, 60, 70, 80, 90]

更新于: 2022年11月8日

278 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始
广告