Tutorialsteacher

关注我们

文章
  • C#
  • C# 面向对象编程
  • ASP.NET Core
  • ASP.NET MVC
  • LINQ
  • 控制反转 (IoC)
  • Web API
  • JavaScript
  • TypeScript
  • jQuery
  • Angular 11
  • Node.js
  • D3.js
  • Sass
  • Python
  • Go 语言
  • HTTPS (SSL)
  • 正则表达式
  • SQL
  • SQL Server
  • PostgreSQL
  • MongoDB
Entity Framework Extensions - 提升 EF Core 9
  批量插入
  批量删除
  批量更新
  批量合并
  • 全部
  • C#
  • MVC
  • Web API
  • Azure
  • IIS
  • JavaScript
  • Angular
  • Node.js
  • Java
  • Python
  • SQL Server
  • SEO
  • 创业
  • 效率

如何在 Python 中展平列表中的列表?

在 Python 中,列表中的列表(或级联列表)类似于二维数组——尽管 Python 没有像 C 或 Java 中那样的数组概念。因此,展平这样的列表中的列表意味着将子列表的元素放入一维数组般的列表中。例如,列表 [[1,2,3],[4,5,6]] 被展平为 [1,2,3,4,5,6]。

这可以通过不同的技术实现,每种技术都将在下面解释。

使用嵌套 for 循环展平列表

使用嵌套 for 循环将子列表的每个元素添加到展平的列表中。

示例
nestedlist = [ [1, 2, 3, 4], ["Ten", "Twenty", "Thirty"], [1.1,  1.0E1, 1+2j, 20.55, 3.142]] flatlist=[] for sublist in nestedlist: for element in sublist: flatlist.append(element) print(flatlist)
输出
[1, 2, 3, 4, 'Ten', 'Twenty', 'Thirty', 1.1, 10.0, (1+2j), 20.55, 3.142]

使用列表推导展平列表

列表推导技术在一个紧凑的语句中给出相同的结果。

示例
nestedlist = [ [1, 2, 3, 4], ["Ten", "Twenty", "Thirty"], [1.1,  1.0E1, 1+2j, 20.55, 3.142]] flatlist=[element for sublist in nestedlist for element in sublist] print(flatlist)
输出
[1, 2, 3, 4, 'Ten', 'Twenty', 'Thirty', 1.1, 10.0, (1+2j), 20.55, 3.142]

使用 functools 模块的 reduce() 函数展平列表

reduce() 函数的第一个参数本身是一个带有两个参数的函数,第二个参数是一个列表。参数函数累积地应用于列表中的元素。例如,reduce(lambda a,b:a+b, [1,2,3,4,5]) 返回列表中数字的累积和。

示例
from functools import reduce flatlist = reduce(lambda a,b:a+b, nestedlist) print(flatlist)
输出
[1, 2, 3, 4, 'Ten', 'Twenty', 'Thirty', 1.1, 10.0, (1+2j), 20.55, 3.142]

回想一下,+ 符号被定义为序列数据类型(列表、元组和字符串)的连接运算符。除了lambda 函数,我们还可以使用 operator 模块中定义的 concat() 函数作为参数,以累积方式附加子列表以进行展平。

示例
from functools import reduce from operator import concat nestedlist = [ [1, 2, 3, 4], ["Ten", "Twenty", "Thirty"], [1.1,  1.0E1, 1+2j, 20.55, 3.142]] flatlist = reduce(concat, nestedlist) print(flatlist)
输出
[1, 2, 3, 4, 'Ten', 'Twenty', 'Thirty', 1.1, 10.0, (1+2j), 20.55, 3.142]
TUTORIALSTEACHER.COM

TutorialsTeacher.com 是您权威的技术教程来源,旨在通过循序渐进的方法,指导您掌握各种网络和其他技术。

我们的内容旨在帮助所有水平的学习者轻松快速地学习技术。访问此平台即表示您已阅读并同意遵守我们的使用条款和隐私政策,这些条款和政策旨在保护您的体验和隐私权。

[email protected]

关于我们使用条款隐私政策
copywrite-symbol

2024 TutorialsTeacher.com. (v 1.2) 版权所有。