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