Python 如何将一个列表的列表转换为平面列表

Python 如何将一个列表的列表转换为平面列表

嵌套列表是一个将元素视为列表本身的列表。

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

要将一个列表的列表(嵌套列表)展平,即将一个二维列表转换为一个一维列表,可以使用不同的方法,如嵌套的for循环、列表推导、内置函数或通过导入库来实现。

在本文中,我们将讨论上述方法来展平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维数组的1D迭代器。

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]

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程