Python展开嵌套列表的五种方法

news2024/11/8 21:22:52

一、问题的提出

微信群中有人问,如何把以下内容转换成一个列表:

转换后:

"[["007674","工银产业升级股票A","GYCYSJGPA","1.3574"],["007675","工银产业升级股票C","GYCYSJGPC","1.3205"],["001719","工银国家战略股票","GYGJZLGP","2.25"]]"

转换后:

["007674","工银产业升级股票A","GYCYSJGPA","1.3574","007675","工银产业升级股票C","GYCYSJGPC","1.3205","001719","工银国家战略股票","GYGJZLGP","2.25"]

二、问题分析

实现上述转换,需要第一步是把字符串转换为列表,我们可以用eval()函数就可以了。然后我还要对嵌套列表进行遍历,对于一个一子列表进行解包,可以通过列表推导式,也可以通过星号或者用列表相加,或者集合合并等多种方法。

以上嵌套列表是标准的列表,如果不是标准的列表,我们还需要用isinstance()来判断是不是一个列表,如果是的话再展开操作,这里可能用到了递归的方法。

1. 列表推导式法

首先,这是一个嵌套列表,如果外面有双引号则是字符串,可以通过eval()来去除,再用列表推导式解决。

data = '[["007674","工银产业升级股票A","GYCYSJGPA","1.3574"],["007675","工银产业升级股票C","GYCYSJGPC","1.3205"],["001719","工银国家战略股票","GYGJZLGP","2.25"]]'
s=[]
print([item for ls in eval(data) for item in ls])

代码运行展示:

2. for 循环法

data = '[["007674","工银产业升级股票A","GYCYSJGPA","1.3574"],["007675","工银产业升级股票C","GYCYSJGPC","1.3205"],["001719","工银国家战略股票","GYGJZLGP","2.25"]]'
s=[]
for lst in eval(data):
   for ls in lst:
       s.append(ls)
print(s)

代码运行展示:

3. 可以用星号解包并输出

用一个星号来解包列表,代码如下。但是最终只是输出,并没有生成列表,不符号题目的要求。

data = '[["007674","工银产业升级股票A","GYCYSJGPA","1.3574"],["007675","工银产业升级股票C","GYCYSJGPC","1.3205"],["001719","工银国家战略股票","GYGJZLGP","2.25"]]'
s=[]
for lst in eval(data):
    print([*lst],sep=",",end="") 第一种方法

代码运行展示:

4. 列表相加法

简单的说就是把字符串转化为列表后,通过循环让里的元素相加。

lst = '[["007674","工银产业升级股票A","GYCYSJGPA","1.3574"],["007675","工银产业升级股票C","GYCYSJGPC","1.3205"],["001719","工银国家战略股票","GYGJZLGP","2.25"]]'
s=[]
for i in eval(lst):
    s+=i
print(s)

5. 集合求并集

把列表转为集合,利用求并集的方法来求合并合的集合,最后通过list转换为列表。

lst = '[["007674","工银产业升级股票A","GYCYSJGPA","1.3574"],["007675","工银产业升级股票C","GYCYSJGPC","1.3205"],["001719","工银国家战略股票","GYGJZLGP","2.25"]]'
s=set()
for i in lst:
    s= s|set(i)
print(list(s))

代码运行后的效果

三、注意事项

  1. 三种方法殊途同归,请有选择地使用。个人更喜欢列表表达式法,比较简洁,运行效率高。
  2. Python中我们可以用一个星号解包列表。但是星号解包不能用于列表推导式,所以说还是有点儿遗憾。

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

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

相关文章

d2l学习_第二章预备知识

x.1 Data Manipulation 数据操作。在Pytorch中常用的数据操作如下: 对于张量,即torch.Tensor类型的数据,你的任何操作都要把他想象成一个指针,因为等于运算符ab,会将b的张量内存地址赋值给a。 torch.Tensor类型的基…

day02-JavaScript-Vue

1 JavaScript html完成了架子,css做了美化,但是网页是死的,我们需要给他注入灵魂,所以接下来我们需要学习JavaScript,这门语言会让我们的页面能够和用户进行交互。 1.5.1.3 JSON对象 自定义对象 在 JavaScript 中自…

linux(信号发送后)

目录: 1.引入什么是合适的时候 2.内核态和用户态 3.信号的处理 4.sigaction函数 -------------------------------------------------------------------------------------------------------------------------------- 1.引入什么是合适的时候 2.信号什么时候被处…

你真的会PPT配色吗?来看看这篇吧,瞬间让你的PPT高大上起来

本文档使用技巧如下截图 在色彩里使用其它填充颜色 选取这个“吸管” 用于吸别人的颜色 我曾经为了出一个“惊艳”的PPT,光吸管用了不下150次。 好的艺术家复制,伟大的艺术家偷窃!--毕加索 下面就给出几大常用配色 各位在使用时注意看这些“色卡”的规律,那就是反差色…

安卓系统浏览器开发

预置某个浏览器为系统默认的浏览器 描述: 当系统存在多个浏览器时,如何预置某个浏览器为系统默认的浏览器? 方法: 1.在PackageManagerService.java中的构造函数结尾添加:setDefaultBrowser(); 2.setDefaultBrowser()的具体实现&#xff…

TDengine 合作伙伴 +1,这次是「DaoCloud道客」

随着我国数字经济持续快速发展,各行各业都在积极拥抱云技术,上云成为企业加快数字化转型步伐的关键一步。在此过程中,越来越多的企业开始意识到云原生技术的重要性,利用云原生更快地开发和部署应用程序,提高应用程序的…

智慧信访大数据挖掘平台解决方案

TipDM数据挖掘建模平台由泰迪自主研发,面向大数据挖掘项目的工具。平台使用JAVA语言开发,采用B/S结构,用户不需要下载客户端,可通过浏览器进行访问。平台提供了基于Python、R以及Hadoop/Spark分布式引擎的大数据分析功能。平台支持…

人民大学加拿大女王大学金融硕士——为什么这么多人选金融行业呢

又是一年毕业季,越来越多的新人涌入职场,金融行业依然是择业人们的香饽饽。为什么大家会选金融行业呢?金融行业是一个充满挑战但也充满魅力的行业。在这个快节奏的行业中,人们不断地面对着机遇和挑战,而这个行业也为那…

TLD5097EL-ASEMI代理英飞LED驱动TLD5097EL

编辑:ll TLD5097EL-ASEMI代理英飞LED驱动TLD5097EL 型号:TLD5097EL 品牌:Infineon(英飞凌) 封装:SSOP-14-EP-150mil 类型:LED驱动、汽车芯片 TLD5097EL特性 输入电压范围宽,从4.5 V到45 V 极低关断…

【FATE联邦学习】FATE 自定义Trainer

背景 自己定义了模型后,需要自行定义训练方式。 这里文档给了方法,但是大部分还是需要自己看源码摸索。 https://fate.readthedocs.io/en/latest/tutorial/pipeline/nn_tutorial/Homo-NN-Customize-Trainer/https://fate.readthedocs.io/en/latest/tu…

如何按需下载和安装Win10补丁

如何按需下载和安装Win10补丁 一般我们都是通过系统自带的Windows更新来直接安装补丁,这种方式虽然方便,但是耗时久,而且更新体量也大,会占用很多空间,其实我们完全可以按需下载和安装,下面就给大家介绍方法…

FPGA量子类比机制-FPQA,将在量子运算设计中引发一场新的革命

1980年代现场可程式化逻辑门阵列(FPGA)的出现彻底改变了电子设计。大约40年后,现场可程式化量子位元阵列(FPQA)可望在量子运算电路设计中引发一场类似的革命。 1980年代现场可程式化逻辑闸阵列(FPGA)的出现彻底改变了电子设计。FPGA允许设计人员创建适合特定应用的…

3DCAT亮相糖酒会,为元宇宙展会提供实时云渲染支持

4月12日,第108届全国糖酒商品交易会(下文简称“糖酒会”)在成都正式开幕,吸引了众多酒类企业和行业人士的参与。 图片源自新华社 本次糖酒会上,某展会采用了“双线”模式,除了线下的实体展位,还…

burpsuite工具的使用(详细讲解)

一)前言 我已经在之前详细的说明了burpsuite的安装过程,如果不了解的可以看 burpsuite安装教程 :http://t.csdn.cn/uVx9X 在这了补充说明一下,在安装完burpsuite并设置完代理后,会出现如果访问的url是使用http协议的…

变频器需要定期更换的器件有哪些

导语:​变频器是由许多电子零件构成,例如半导体元件等,在使用和维护当中就涉及到更换部件的问题,由于变频器组成或物理特性的原因,在一定的时期内会产生劣化,因而会降低变频器的特性,甚至会引起…

python---实现一个简化版本的人生模拟器

1.游戏开始的时候,设定初始属性—颜值 体质 智力 家境 2.开始游戏,随机生成性别和出生点 3.针对每一年,都生成人生经历(依靠一定的随机因素当前角色属性) 需要import random一下 一些函数 代码的部分运行情况,由于代码过长此处不予展示!这个部分只写了幼年时期发生的事件!

分布式项目 12 用jsonp来完成单点登录功能(两个系统之间进行信息交互)

在项目中使用ctrlH ,来快速查找相关的hrl请求。 首先全部的请求会进过jt-web,在进行对其他系统的通信。 说明:当点击“登录”或者"免费注册"跳转到登录或者注册页面。 在jt-web项目中,声明UserController资源&#…

【建议收藏】自动化测试框架开发教程

在自动化测试项目中,为了实现更多功能,我们需要引入不同的库、框架。 首先,你需要将常用的这些库、框架都装上。 pip install requests pip install selenium pip install appium pip install pytest pip install pytest-rerunfailures pip …

Vue 项目环境搭建和创建准备工作

一. 学习目标 掌握 Vue 项目创建的依赖环境掌握 Vue 项目创建过程 二. 学习内容 掌握搭建 Vue 项目准备环境掌握 Vue 项目创建过程了解 Vue 项目各子目录 三. 学习过程 1. 准备工作 (1)安装Node.js 打开node.js官网:Node.js &#xff0…

SpringBoot中事务失效的六个原因

SpringBoot中事务失效的原因🚩 常见的事务失效原因包括如下六个: 1. 事务方法非public修饰 由于Spring的事务是基于AOP的方式结合动态代理来实现的。因此事务方法一定要是public的,这样才能便于被Spring做事务的代理和增强。 而且,在Spri…