Python将多维列表「拉伸」为一维列表的10种方式

news2024/9/21 12:29:50

来源:投稿 作者:Fairy
编辑:学姐

在Python编程中,列表是一种常用的数据类型。当我们遇到了一个嵌套列表,如果想将它扁平化为一维列表,就可以使用下面10种方法之一来实现这个需求。

1. 使用两层循环遍历

lst = [[1, 2], [3, 4], [5, 6]]
new_lst = []
for sublist in lst:
    for element in sublist:
        new_lst.append(element)
print(new_lst)

这段代码中,定义了一个二维列表lst,其中包含了三个子列表(即嵌套的列表)。然后创建了一个空列表new_lst。接下来使用for循环遍历lst中的每一个子列表,再使用嵌套的for循环遍历子列表中的每一个元素,并将这些元素添加到new_lst中。最后输出new_lst,即为将lst扁平化为一维列表的结果。

2. 使用flatten()函数

import numpy as np

lst = [[1, 2], [3, 4], [5, 6]]
new_lst = list(np.array(lst).flatten())
print(new_lst)

这段代码中,定义了一个二维列表lst,其中包含了三个子列表(即嵌套的列表)。接下来,使用NumPy库的array()方法将lst转换成了一个NumPy数组,再调用该数组的flatten()方法将其扁平化为一个一维数组。最后,将该一维数组转换成一个标准的Python列表,并将其赋值给变量new_lst。最终输出new_lst,即为将lst扁平化为一维列表的结果。

3. 使用列表解析式

lst = [[1, 2], [3, 4], [5, 6]]
new_lst = [element for sublist in lst for element in sublist]
print(new_lst)

这段代码中,定义了一个二维列表lst,其中包含了三个子列表(即嵌套的列表)。然后,使用一行代码创建了一个新的一维列表new_lst。具体来说,这行代码中使用了两层for循环,并在内部使用了列表推导式的语法。在这里,外层for循环用于遍历lst中的每一个子列表,而内层for循环则用于遍历子列表中的每一个元素。最后,在列表推导式中使用了element这个变量来存储遍历到的元素,并将其添加到新列表new_lst中。

4. 使用reduce()函数

import operator
from functools import reduce

lst = [[1, 2], [3, 4], [5, 6]]
new_lst = reduce(operator.concat, lst)
print(new_lst)

这段代码中,定义了一个二维列表lst,其中包含了三个子列表(即嵌套的列表)。接下来,使用reduce()函数和operator.concat函数实现将lst中的所有子列表连接在一起。具体来说,operator.concat函数用于将两个列表连接在一起,而reduce()函数则用于对lst中的每一个子列表依次执行concat操作。最终,reduce函数得到的结果是一个一维列表,存储在变量new_lst中。

5. 使用from_iterable()函数

import itertools
 
lst = [[1, 2], [3, 4], [5, 6]]
new_lst = list(itertools.chain.from_iterable(lst))
print(new_lst)

这段代码中,定义了一个二维列表lst,其中包含了三个子列表(即嵌套的列表)。接下来,使用itertools.chain.from_iterable()函数实现将lst中的所有子列表连接在一起。具体来说,from_iterable()函数用于将一个可迭代对象中的所有元素连接到一起,而chain()函数则用于在多个可迭代对象之间建立链接。最终,使用list()函数将生成的迭代器转换为一个新的一维列表new_lst。

6. 使用sum()函数

lst = [[1, 2], [3, 4], [5, 6]]
new_lst = sum(lst, [])
print(new_lst)

这段代码中,定义了一个二维列表lst,其中包含了三个子列表(即嵌套的列表)。接下来,使用sum()函数实现将lst中的所有子列表连接在一起。具体来说,sum()函数用于对多个可迭代对象进行求和操作,而对于列表而言,在使用sum()函数时传入一个空列表[]作为初始值,就可以将多个子列表拼接在一起。最终,使用list()函数将生成的结果转换为一个新的一维列表new_lst。

7. 使用ravel()函数

import numpy as np

lst = [[1, 2], [3, 4], [5, 6]]
new_lst = list(np.ravel(lst))
print(new_lst)

这段代码中,定义了一个二维列表lst,其中包含了三个子列表(即嵌套的列表)。接下来,使用numpy中的ravel函数对lst进行扁平化操作,并将其转换为一个一维数组。最后,使用list()函数将numpy数组转换为一个新的一维列表new_lst。

8. 使用reshape()函数

import numpy as np

lst = [[1, 2], [3, 4], [5, 6]]
new_lst = np.array(lst).reshape(-1)
print(new_lst.tolist())

这段代码中,定义了一个二维列表lst,其中包含了三个子列表(即嵌套的列表)。接下来,使用numpy.array()函数将lst转换为一个numpy数组,并使用reshape()函数对其进行重新形状,将其扁平化为一个一维数组。最后,使用tolist()函数将numpy数组转换为一个新的一维列表new_lst。

9. 使用flatten()函数

import numpy as np

lst = [[1, 2], [3, 4], [5, 6]]
new_lst = np.array(lst).flatten('C')
print(list(new_lst))

这段代码中,定义了一个二维列表lst,其中包含了三个子列表(即嵌套的列表)。接下来,使用numpy.array()函数将lst转换为一个numpy数组,并使用flatten()函数对其进行扁平化操作,将其扁平化为一个一维数组。需要注意的是,该函数传入的参数'C'表示扁平化时按照行优先顺序进行,也就是将每一行展开到一起。最后,使用list()函数将numpy数组转换为一个新的一维列表new_lst。

10. 使用stack()函数

import pandas as pd

lst = [[1, 2], [3, 4], [5, 6]]
new_lst = list(pd.DataFrame(lst).stack())
print(new_lst)

这段代码中,定义了一个二维列表lst,其中包含了三个子列表(即嵌套的列表)。接下来,使用pandas.DataFrame()函数将lst转换为一个DataFrame数据框,并使用stack()函数对其进行堆叠操作,将其扁平化为一个Series数据序列。然后,使用list()函数将Series转换为一个新的一维列表new_lst。

以上10种方式,你了解哪几种呢?

关注下方《学姐带你玩AI》🚀🚀🚀

回复“python”了解更多学习资料

码字不易,欢迎大家点赞评论收藏!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/708787.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【记录】实践场景

Apache Doris 在京东搜索实时 OLAP 探索与实践 https://doris.apache.org/zh-CN/blog/JD_OLAP/ 通过对比开源的几款实时OLAP引擎,我们发现doris和clickhouse能够满足我们的需求,但是clickhouse的并发度太低是个潜在的风险,而且clickhouse的数…

已将该虚拟机配置为使用 64 位客户机操作系统。但是,无法执行 64 位操作。

错误提示: 一般只有下面几种方法 百度经验解决方法 http://jingyan.baidu.com/article/90bc8fc859b481f653640cac.html http://jingyan.baidu.com/article/25648fc1bfd4a29190fd0067.html 2.第二种方法 检测问题所在: 下载LeoMoon CPU-V 检查一下CP…

小程序本地生活

2023年7月1号 感觉就是视频要快点看不完 不然哪天接口又失效了 Page({/*** 页面的初始数据*/data: {// 存放轮播图的数据swiperList:[],// 存放九宫格的数据gridList:[]},/*** 生命周期函数--监听页面加载*/onLoad(options) {this.getSwiperList()this.getGridList()},// 获…

【GIS】阿里AI Earth选择内置地图

说明 aie.Map,构造一个地图组件Map对象,用于可视化渲染计算结果。坐标系固定为EPSG:4326。 阿里AI Earth中,坐标系默认为EPSG:4326 效果 import aie aie.Authenticate() aie.Initialize() my_province aie.FeatureCollection(China_Provin…

【Python】Python基础笔记

Python基础笔记 数据的输入和输出 print("数据") # 这是数据的输出 name input() # 这是数据的输入,并将输入的数据赋值给name。而且无论输入的何种类型的数据,最终的结果都是 字符串 类型的数据pint 输出不换行: # print 输出…

结合ace编辑器实现MapboxGL热力图样式在线配置

概述 MapboxGL热力图的配置参数并不多,但是有时候为了或得一个比较好用的热力图配置参数,我们不得不改代码再预览,显得尤为麻烦,为方便配置,实现实时预览,本文使用ace实现了一个热力图样式在线配置页面。 …

MSF之信息收集及漏洞利用

MSF之信息收集及漏洞利用 一、Metasploit简介二、Metasploit安装三、安装postgresql数据库四、KaIi-msfdb-Postgresql报错排查处理五、Metasploit-启动六、Metasploit-目录结构六、Metasploit-模块七、Metasploit-信息收集7.1、db_nmap/nmap7.2、Metasploit auxiliary7.2.1、端…

【STM32】步进电机及其驱动(ULN2003驱动28BYJ-48丨按键控制电机旋转)

本篇文章包含的内容 一、步进电机的结构和工作原理1.1 步进控制系统的组成1.2 步进电机简介1.3 步进电机的分类1.4 步进电机的工作原理1.4.1 单极性步进电机(5线4相)1.4.2 双极性步进电机(4线2相)1.4.3 细分器驱动原理 1.5 步进电…

hcia回顾复习

一、OSI七层参考模型 OSI/RM 开放式系统互联参考模型 由ISO ---- 国际标准化组织 — 1979提出 核心思想 分层 :上层协议再下层协议提供服务的基础上再提供增值服务。 应用层 — 提供各种应用服务.可以将抽象语言转换为编码 .应用程序 APP:通过人机交互提供&#xff…

Win10打字输入法不显示输入框怎么办?

Win10的打字输入法是我们日常计算机使用中必不可少的工具之一,然而,有时候在使用过程中可能会遇到打字输入法不显示输入框的问题,这给我们的输入和操作带来了很大的困扰,如果您也遇到了这个问题,不要担心,以…

Linux--获取某个区间文本的指令:head和tail

Linux--获取文本前n行的指令&#xff1a;head 语法&#xff1a; head 选项 文件名 功能&#xff1a; head 用来显示档案的开头至标准输出中&#xff0c;默认head命令打印其相应文件的开头10行。 选项&#xff1a; -n <行数> 显示的行数 示例&#xff1a; ①生成默…

【UE5 Cesium】05-Cesium for Unreal 在子关卡中添加Actor

上一篇&#xff1a;【UE5 Cesium】04-Cesium for Unreal 将不同地区的倾斜摄影作为不同子关卡 步骤 首先将关卡切换到“DenverRooftop” 添加一个“立方体” 将关卡切换到“Globe” 然后再向场景中添加一个“椎体” 此时如果我们将关卡切换到“Boston”&#xff0c;只能看到“…

如何高效获取嵌入式系统知识和技能

学习嵌入式系统的方法&#xff1a; 设定明确的目标&#xff1a;在学习嵌入式系统之前&#xff0c;明确自己的学习目标和期望结果。这可以帮助你更有针对性地选择学习材料和项目&#xff0c;并保持专注和动力。 分解学习计划&#xff1a;将学习过程分解成小的可管理的任务和阶段…

SQL注入经验方法总结

SQL注入 先判断是哪种数据库。再进行后续操作。 SQL注入漏洞产生的原理 web应用程序&#xff0c;对用户输入的语句没有做严格的过滤&#xff0c;导致被输入的语句被拼接成恶意代码的SQL语句进入数据库中查询&#xff0c;修改信息等。 所以SQL注入漏洞需要的条件&#xff1a…

chatglm2 本地部署中遇到的问题

在本地GPU部署的时候&#xff0c;发现了报错&#xff0c; ModuleNotFoundError: No module named transformers_modules.chatglm2-6b 但是自己路径都是正确的&#xff0c; 确实是按照双斜杠来写的路径。 但依旧报错 最后发现是安装的 transformers 包的版本太新导致的。 …

抖音SEO账号矩阵系统源码

一、抖音SEO账号矩阵系统源码思路 1. 数据采集与分析 2. 排名算法设计 3. 用户管理模块 4. 内容推荐系统 二、抖音矩阵系统源码功能概述 &#xff08;1&#xff09;多平台多账号管理,支持抖音&#xff0c;快手&#xff0c;好看视频&#xff0c;B站&#xff0c;西瓜&#x…

jdbc获取数据库元数据信息

DatabaseMetaData 接口&#xff1a; 获取数据库&#xff0c;&#xff0c;&#xff0c;表&#xff0c;&#xff0c;列&#xff0c;&#xff0c;等元数据信息 jdbc使用&#xff1a; // 获取一个连接 Connection connection DriverManager.getConnection(url,username,password)…

葡萄酒数据可视化分析

葡萄酒数据可视化分析 必应壁纸供图 数据集&#xff1a;https://download.csdn.net/download/weixin_53742691/87982219 import pandas as pd import seaborn as sns import matplotlib.pyplot as pltwine pd.read_csv("wine_quality/wine_edited.csv") wine.hea…

chatgpt赋能python:用Python来制作动画

用Python来制作动画 Python是一种高级编程语言&#xff0c;可以用于许多任务&#xff0c;包括数据分析、网络编程&#xff0c;甚至是制作动画。在这篇文章中&#xff0c;我们将讨论如何使用Python来制作动画。 Python中的动画库 Python中有许多用于制作动画的库。其中最流行…

论文笔记--Goat: Fine-tuned LLaMA Outperforms GPT-4 on Arithmetic Tasks

论文笔记--Goat: Fine-tuned LLaMA Outperforms GPT-4 on Arithmetic Tasks 1. 文章简介2. 文章概括3 文章重点技术3.1 LLM的选择3.2 算数任务的可学习性(learnability)3.3 大模型的加减乘除 4. 数值实验结果5. 文章亮点6. 原文传送门7. References 1. 文章简介 标题&#xff…