首页 > 编程语言 >【Python】将Python中的多维列表进行展开

【Python】将Python中的多维列表进行展开

时间:2023-10-21 20:04:09浏览次数:39  
标签:函数 Python list 展平 列表 flattened flatten 多维

1. 引言

在本教程中,我们将探索在 Python 中展平列表的不同方法。列表展开是指将多维列表转换为一维列表的过程,我们将介绍如何使用 Python 语法和 NumPy 库来分别展平 二维、三维和四维度的列表。

闲话少说,我们直接开始吧!

2. 展开二维列表

让我们首先创建一个名为flatten_2d的函数,该函数可以展平常见的二维数组。该函数采用list类型的列表作为输入并返回展开后的列表。代码实现如下:

def flatten_2d(input_list: list) -> list:
   flattened = []
   for sublist in input_list:
      for element in sublist:
        flattened.append(element)
   return flattened

该函数循环访问输入列表中的每个子列表,并将每个元素追加到展平列表中。最后,它返回展平列表。

为了测试函数,我们可以创建一个 2D 列表并将其传递给 flatten_2d 函数:

list_2d = [[1, 2], [3, 4], [5, 6]]
print(flatten_2d(list_2d))

运行代码,得到结果如下:

[1, 2, 3, 4, 5, 6]

3. 展开三维列表

接下来,让我们创建一个名为flatten_3d的函数,它可以展平三维数组。该函数遵循与flatten_2d函数类似的方法,但需要一个额外的循环来处理最外层的列表。

def flatten_3d(input_list: list) -> list:
  flattened = []
  for sublist in input_list:
    for sublist_2 in sublist:
      for element in sublist_2:
        flattened.append(element)
  return flattened

我们使用以下代码进行测试验证:

list_3d = [[[1, 2, 3, 4, 5, 6, 7, 8]]]
print(flatten_3d(list_3d))

得到输出如下:

[1, 2, 3, 4, 5, 6, 7, 8]

4. 展开任意维度的列表

使用原版 Python 语法展平更多维度的列表可能会变得很麻烦,尤其是对于高维数组。此时,推荐大家使用 NumPy 库,它提供了一种简单的方法来平展任何维度的列表。

首先,确保通过在终端中运行 pip install numpy 来安装 NumPy库。接着,让我们创建一个名为 flatten_any 的函数,该函数使用 NumPy 来展平任何列表。相关函数定义如下:

import numpy as np

def flatten_any(input_list: list) -> list:
  np_list = np.array(input_list)
  flattened = np_list.flatten()
  return flattened.tolist()

上述函数使用 np.array() 将输入列表转换为 NumPy 数组。然后,它使用函数 flatten() 来展平数组。最后,它使用 tolist()函数将扁平化的NumPy数组转换回常规的Python 中的列表。 为了测试函数,我们可以创建一个 4D 列表并将其传递给 flatten_any 函数:

list_4d = [[[[1, 2, 3, 4, 5, 6, 7, 8]]]]
print(flatten_any(list_4d))

得到输出如下:

[1, 2, 3, 4, 5, 6, 7, 8]

5. 使用itertools.chain展开列表

事实上,更进一步我们可以使用函数itertools.chain,来将我们的输入original_list中的内部列表连接成一个序列,而无需显示创建新的列表,只需要使用list(...)将结果转化为常规列表即可,代码如下:

import itertools

original_list = [[1, 2, 3], [4, 5], [6, 7, 8]]
flattened_list = list(itertools.chain(*original_list))
print(flattened_list)

得到结果如下:

[1, 2, 3, 4, 5, 6, 7, 8]

使用上述方法,可以有效地展平Python 中的多维嵌套列表。

6. 总结

Python中的展平列表可以使用各种方法实现。我们探索了四种不同的方法:使用Python的原生语法来扁平化2D和3D列表,以及使用NumPy库展平任意维度的列表。每种方法都有自己的优点和局限性,因此请选择需要来选择最适合自己需求的方法。

标签:函数,Python,list,展平,列表,flattened,flatten,多维
From: https://blog.51cto.com/u_15506603/7969322

相关文章

  • Postgresql数据库之Python连接数据库&查询练习
    Task1.基于finalshell建立的SSH隧道,实现Python代码连接天翼云数据库(1)给出finalshell的配置如下图:为了登录安全起见,将ssh登录端口和数据库监听端口进行了修改。(2)给出Python连接天翼云数据库的代码Python代码如下:importpsycopg2conn=psycopg2.connect(dbname='a2513210112',......
  • Python 循环
    Python有两个基本的循环命令:while循环for循环while循环使用while循环,我们可以在条件为真的情况下执行一组语句。示例,打印i,只要i小于6:i=1whilei<6:print(i)i+=1注意:记得增加i的值,否则循环将永远继续下去。while循环要求相关的变量已经准备好,例如在这个示......
  • Python 循环
    Python有两个基本的循环命令:while循环for循环while循环使用while循环,我们可以在条件为真的情况下执行一组语句。示例,打印i,只要i小于6:i=1whilei<6:print(i)i+=1注意:记得增加i的值,否则循环将永远继续下去。while循环要求相关的变量已经准备好,例如在这个示例......
  • OPNsense 系列十一:OPNsense Tools 写的一些 Python 小工具
    OPNsenseTools介绍基于OPNsense系统的Python小工具、小程序集,实现个人需要的功能。目前支持:liteip:终端网络信息获取小工具,实现域名、IPv4、IPv6、MAC更新的电子邮件通知。ping_subprocess:ping(IPv4)触发命令行指令。支持Windows7、Windows10、FreeB......
  • python技术栈之单元测试中mock的使用
    什么是mock?mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。mock的作用特别是开发过程中上下游未完成的工序导致当前无法测试,需要虚拟某些特定对象以便测试。unittest是python内置的单元测试库,在做接口测试时,如果......
  • 小白学Python - 使用 Django 的天气应用程序
    使用Django的天气应用程序本文中我们将学习如何创建一个使用Django作为后端的天气应用程序。Django提供了一个基于PythonWeb框架的Web框架,允许快速开发和干净、务实的设计。基本设置cdweather启动服务器pythonmanage.pyrunserver要检查服务器是否正在运行,请转至Web......
  • 代码随想训练营第十天(Python)| 232.用栈实现队列 、 225. 用队列实现栈
    232.用栈实现队列classMyQueue:def__init__(self):self.stack_in=list()self.stack_out=list()defpush(self,x:int)->None:self.stack_in.append(x)defpop(self)->int:ifself.empty():......
  • 循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(11) -- 下拉
    在我们开发的前端项目中,往往为了方便,都需对一些控件进行自定义的处理,以便实现快速的数据绑定以及便捷的使用,本篇随笔介绍通过抽取常见字典列表,实现通用的字典类型绑定;以及通过自定义控件的属性处理,实现系统字典内容的快捷绑定的操作。1、下拉列表的数据绑定在我们创建下拉列表的......
  • python打包成exe
    python打包成exe前提:文件可成功运行,为了方便后续使用或者发送给他人使用pyinstaller-F-F:生成单个文件。缺点:文件启动慢-D:打包成一个目录目录处理打包后文件过大的问题:①win+R进入cmd/powershell②安装虚拟环境:pipinstallvirtualenvpipinstallvirtualenvwrapper-win③制作......
  • Python定时任务框架APScheduler
    Python定时任务框架APSchedulerPython定时任务框架APScheduler详解-CSDN博客python定时任务最强框架APScheduler详细教程-知乎(zhihu.com) 课程详情接口思路一:直接在之前写好的查询所有课程的视图类上,配置一个类即可classCourseView(GenericViewSet,CommonListModelM......