Python | 将嵌套列表转换为扁平列表

在这篇文章中,我们将介绍 如何在 Python 中将嵌套列表展平。 为了将嵌套列表转换为扁平列表,让我们来看一些示例。

示例:

输入 : l = [1, 2, [3, 4, [5, 6] ], 7, 8, [9, [10] ] ]
输出 : l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

输入 : l = [[[‘item1‘, ‘item2‘]], [[‘item3‘, ‘item4‘]]] 
输出 : l = [‘item1‘, ‘item2‘, ‘itm3, ‘item4‘‘]

什么是嵌套列表?

嵌套列表是包含在另一个列表中的列表(或者是包含在另一个嵌套列表中的列表)。我们的任务是在 Python 中将这种嵌套列表转换为单一列表,即无论 Python 列表中有多少层嵌套,都要去除所有的嵌套结构,将其转换为一个包含最外层括号内所有值的单一列表,且内部不再包含任何括号。

在这篇文章中,我们将介绍 5 种不同的方法来将列表的列表展平。

  • 使用嵌套循环
  • 使用列表推导式
  • 使用递归
  • 使用 NumPy 模块
  • 使用 Python 内置的 sum() 方法

示例 1:使用嵌套 for 循环将嵌套列表转换为扁平列表

在这个示例中,我们将看到首先遍历外部列表,如果存在子列表,我们就使用 for 循环 遍历该子列表。之后,我们将元素追加到我们的新列表 "flatList" 中,这就得到了一个一维的扁平列表。

Python3


CODEBLOCK_96934e0e

输出:

List [[11, 22, 33, 44], [55, 66, 77], [88, 99, 100]]
Flat List [11, 22, 33, 44, 55, 66, 77, 88, 99, 100]

时间复杂度:O(n)

辅助空间:O(n)

示例 2:使用列表推导式

在这个示例中,我们将使用 列表推导式 首先遍历列表,然后使用 for 循环遍历子列表。之后,我们使用列表推导式将元素追加到我们的新列表 "flatList" 中,从而得到一个一维的扁平列表。

Python3


CODEBLOCK_13ebb088

输出:

List [[11, 22, 33, 44], [55, 66, 77], [88, 99, 100]]
Flat List [11, 22, 33, 44, 55, 66, 77, 88, 99, 100]

示例 3:使用递归

在这个示例中,我们使用 递归方法 来展平具有多层嵌套的列表。

Python3


CODEBLOCK_1d9ad4de

输出:

The original list:  [1, 2, [3, 4, [5, 6]], 7, 8, [9, [10]]]
The list after removing nesting:  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

示例 4:使用 Pandas 模块

在这个示例中,我们使用 pandas 模块,pandas 有一个名为 np.concatenate 的方法,它可以帮助我们将嵌套列表展平。

Python3


CODEBLOCK_f2c2dd5f

输出:

[11, 33, 22, 55, 11, 77, 88]

示例 5:使用 Python 内置的 sum() 方法

在这个示例中,我们使用 Python 内置的 sum() 方法 来获取扁平列表。

Python3


CODEBLOCK_eaf4828a

输出:

New list [11, 22, 33, 44, 55, 66, 77, 88, 99]

示例 6:使用 Python functools 模块

functools 模块 提供了使用和扩展其他函数及可调用对象的方法,而无需完全重写它们。

Python3

`

import functools
import operator

# 原始列表
lis = [[11, 22, 33, 44], [55, 66, 77], [88, 99, 100]]

flatList = functools.reduce(operator.iconcat, lis, [])
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/43410.html
点赞
0.00 平均评分 (0% 分数) - 0