Python 如何将列表嵌套的列表变成一维列表
嵌套列表是一个列表,其中的元素本身也是列表。
例如: [[1,2,3], [4,5,6], [7,8,9]] 是一个嵌套列表,因为它有三个列表([1,2,3], [4,5,6]和[7,8,9])作为其元素。
要将列表嵌套的列表(即将二维列表转换为一维列表),有不同的方式,例如嵌套for循环、列表解析、内置函数或通过在Python中导入库等。
在本文中,我们将讨论上述方法在Python中展开列表。
阅读更多:Python 教程
使用for循环
使用for循环迭代遍历一个序列(即一个列表、元组、字典、集合或字符串)。这更像是其他面向对象编程语言中看到的迭代器方法,而不是在其他编程语言中发现的for关键字。
示例
在以下示例代码中,我们必须将嵌套列表转换为单个1D列表。因此,我们使用 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的列表解析特性使得从现有列表构建新列表变得简单。它为从现有列表和它们的值构建新列表提供了更简洁的语法。
示例
在此示例中,使用列表解析方法将嵌套列表转换为单个1D列表。
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)
输出
以下是执行上述程序时获得的输出。
原始列表[[10,20,30,40],[50,60,70],[80,90]]
压平列表[10,20,30,40,50,60,70,80,90]
使用NumPy库
NumPy是一个处理数组的通用包。它提供了一个多维数组对象,拥有出色的速度和与这些数组交互的能力。
示例
在下面的示例中,我们使用了NumPy库中的其他方法。这些方法如下所述。
- concatenate() 函数用于连接数组序列。
-
flat() 函数用作N维数组上的1D迭代器。
import numpy
originallist = [[10, 20, 30, 40], [50, 60, 70], [80, 90]]
flatlist = list(numpy.concatenate(originallist).flat)
print('原始列表', originallist)
print('转换后的列表', flatlist)
输出
以下是执行上述程序时获得的输出。
原始列表[[10,20,30,40],[50,60,70],[80,90]]
转换后的列表[10,20,30,40,50,60,70,80,90]
极客教程