如何将几个长度相同的列表并列组合在一起(附:zip函数使用出错原因:巨坑~)

       Python中列表对象使用很方便,用Python编程时,经常会遇到将多个长度相同的列表是针对某一组特定对象的,如何能方便的把这些列表组合起来一起使用呢?ZIP()函数可以方便的解决这个问题。

一、将几个长度相同的列表并列组合

例如,设置四个列表

ID = [1, 2, 3, 4]
Name = ['小红', '小蓝', '小黑', '小白']
Sex = ['F', 'M', 'M', 'F']
Weight = [90, 110, 180, 88]

由于上述四个列表均属于迭代对象,所以我们用可以用zip()函数把四个列表组合成一个整体。

merge = zip(ID, Name, Sex, Weight)

试着打印一下

For _ID, _Name, _Sex, _Weight in merge:
	Print(_ID, _Name, _Sex, _Weight)

可以发现,通过zip合并后,各列表中的元素按顺序依次组合在一起了:

匹配的还是很完美的,但如果各列表长度不一样会怎样呢?

二、组合长度不一样的列表会怎样?

再设置一个长度为3的列表组合进去试试

cuo =[ 33,44,55]
mergex = zip(ID, Name, Sex, cuo)
for _ID, _Name, _Sex, _cuo in mergex:
	print(_ID, _Name, _Sex, _Weight)

长度不一样也能行呢,只不过整体按最短列表的长度进行截取了

三、列表打包在一起再怎么分开?

能进能退才能自如,能打包能拆分,让人用起来才放心。

把多个列表组合成一个zip对象后,怎么再恢复为原有列表呢?首先还是要用zip()函数,不过需要在打包成的对象前面加*作为参数,用前面组合起来的merge对象为例。意外发生了:[0]都不行——IndexError,很明显貌似原先组合好的merge变成空的了……

(一)为什么zip会变空?

    我:做好的zip为什么会变成空的,我只不过用了一次。

    Python:没错,就是这样,因为你使用了一次,所以就空了

    我:……,你好体贴,用完直接帮我帮我回收了

    Python:没错,我就是这么棒~,出于优化内存的考虑,在python3中,zip()函数生成的zip对象只能访问一次,操作一次后,内存就会释放!!!(python2中可以访问多次).

     我:咋感觉这叫坑呢,两个版本差别这么大,更坑……

(二)大不了再组装一个重新分,再次失败……

merge = zip(ID, Name, Sex, Weight)
for i in range(4):
  print(list(zip(*merge)[i])

有忘记不能多次使用,居然用了循环,再次失败……

鉴于zip不耐用,必须一次性将zip转换为其他对象,我们再来……

(三)组装成zip后先转换成list,成功!

merge = zip(ID, Name, Sex, Weight)
alllist = list(zip(*merge))
for i in range(4):
  print(alllist[i])

这次成功了,不过得到的是几个元组对象,因此还需要通过list函数处理一下。

(四)通过list函数把元组转换为列表

由于做好了能重复用的list——allist,终于不用重新做zip了~

for i in range(4):
  print(list(alllist[i]))

终于成功了,就这样一个小函数,费这些事~

四、一点思考

(一)一个函数在使用前,一定要系统了解下,最好能测试一下,不然容易踩坑。

(二)函数不要想当然的乱用,遇到问题,如果扛一阵解决不了,就换种方式,别非硬碰硬,查找解决办法有时是解决问题最快的方式。这个函数比较简单,进坑易出,有些大坑你掉进去,你就试吧,你不去查找原因硬爬,不排除永远待在坑里的可能……

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2014年认证杯SPSSPRO杯数学建模B题(第二阶段)位图的处理算法全过程文档及程序

2014年认证杯SPSSPRO杯数学建模 B题 位图的处理算法 原题再现: 图形(或图像)在计算机里主要有两种存储和表示方法。矢量图是使用点、直线或多边形等基于数学方程的几何对象来描述图形,位图则使用像素来描述图像。一般来说&#…

3D产品可视化SaaS

“我们正在走向衰退吗?” “我们已经陷入衰退了吗?” “我们正在步入衰退。” 过去几个月占据头条的问题和陈述引发了关于市场对每个行业影响的讨论和激烈辩论。 特别是对于科技行业来说,过去几周一直很动荡,围绕费用、增长和裁…

1.8 python 模块 time、random、string、hashlib、os、re、json

ython之模块 一、模块的介绍 (1)python模块,是一个python文件,以一个.py文件,包含了python对象定义和pyhton语句 (2)python对象定义和python语句 (3)模块让你能够有逻辑地…

Tomcat 单机多实例一键安装

文章目录 一、场景说明二、脚本职责三、参数说明四、操作示例五、注意事项 一、场景说明 本自动化脚本旨在为提高研发、测试、运维快速部署应用环境而编写。 脚本遵循拿来即用的原则快速完成 CentOS 系统各应用环境部署工作。 统一研发、测试、生产环境的部署模式、部署结构、…

Linux安装redis(基于CentOS系统,Ubuntu也可参考)

前言:本文内容为实操记录,仅供参考! 一、下载并解压Redis 1、执行下面的命令下载redis:wget https://download.redis.io/releases/redis-6.2.6.tar.gz 2、解压redis:tar xzf redis-6.2.6.tar.gz 3、移动redis目录&a…

D. Friends and Subsequences 线段树上二分

有个细节&#xff0c;就是query的时候的顺序&#xff0c;不注意到直接T飞&#xff0c;分析知道如果它只在一边的话你直接一边 可以保证复杂度 #include<iostream> #include<cstring> #include<algorithm>const int N 2e510; using namespace std; using ll…

MySQL 数据库的日志管理、备份与恢复

一. 数据库备份 1.数据备份的重要性 备份的主要目的是灾难恢复。 在生产环境中&#xff0c;数据的安全性至关重要。 任何数据的丢失都可能产生严重的后果。 造成数据丢失的原因&#xff1a; 程序错误人为,操作错误,运算错误,磁盘故障灾难&#xff08;如火灾、地震&#xff0…

比较AI编程工具Copilot、Tabnine、Codeium和CodeWhisperer

主流的几个AI智能编程代码助手包括Github Copilot、Codeium、Tabnine、Replit Ghostwriter和Amazon CodeWhisperer。 你可能已经尝试过其中的一些&#xff0c;也可能还在不断寻找最适合自己或公司使用的编程助手。但是&#xff0c;这些产品都会使用精选代码示例来实现自我宣传…

Vue挂载全局方法

简介&#xff1a;有时候&#xff0c;频繁调用的函数&#xff0c;我们需要把它挂载在全局的vue原型上&#xff0c;方便调用&#xff0c;具体怎么操作&#xff0c;这里来记录一下。 一、这里以本地存储的方法为例 var localStorage window.localStorage; const db {/** * 更新…

如何在 Mac Pro 上恢复丢失的数据?

无论您多么努力&#xff0c;几乎不可能永远不会无意中删除 Mac 上的文件。当您得知删除后清空了垃圾箱时&#xff0c;您的处境可能看起来很黯淡。不要灰心。我们将教您如何使用本机操作系统功能或数据恢复工具恢复丢失的数据。奇客数据恢复Mac版可帮助恢复已从 Mac Pro 计算机上…

npm救赎之道:探索--save与--save--dev的神秘力量!

目录 1. --save和--save-dev是什么&#xff1f;2. 区别与应用场景--save--save-dev 3. 生产环境与开发环境4. 实际应用示例--save--save-dev 5. 总结 在现代软件开发中&#xff0c;npm&#xff08;Node Package Manager&#xff09;扮演着不可或缺的角色&#xff0c;为开发者提…

Java八股文(JVM)

Java八股文のJVM JVM JVM 什么是Java虚拟机&#xff08;JVM&#xff09;&#xff1f; Java虚拟机是一个运行Java字节码的虚拟机。 它负责将Java程序翻译成机器代码并执行。 JVM的主要组成部分是什么&#xff1f; JVM包括以下组件&#xff1a; ● 类加载器&#xff08;ClassLoa…

HTTP状态 405 - 方法不允许

方法有问题。 用Post发的请求&#xff0c;然后用Put接收的。 大家也可以看看是不是有这种问题 <body><h1>HTTP状态 405 - 方法不允许</h1><hr class"line" /><p><b>类型</b> 状态报告</p><p><b>消息…

如何使用常用的苹果应用商店上架工具提高应用下载量

摘要 移动应用app上架是开发者关注的重要环节&#xff0c;但常常会面临审核不通过等问题。为帮助开发者顺利完成上架工作&#xff0c;各种辅助工具应运而生。本文探讨移动应用app上架原理、常见辅助工具功能及其作用&#xff0c;最终指出合理使用工具的重要性。 引言 移动应…

python(一)网络爬取

在爬取网页信息时&#xff0c;需要注意网页爬虫规范文件robots.txt eg:csdn的爬虫规范文件 csdn.net/robots.txt User-agent: 下面的Disallow规则适用于所有爬虫&#xff08;即所有用户代理&#xff09;。星号*是一个通配符&#xff0c;表示“所有”。 Disallow&…

Groovy结合Java在生产中的落地实战

Groovy简介 Groovy是用于Java虚拟机的一种敏捷的动态语言&#xff0c;是一种成熟的面向对象编程语言&#xff0c;又是一种纯粹的脚本语言。Groovy运行在JVM环境上&#xff0c;在语法上兼具java 语言和脚本语言特点&#xff0c;大大简化了语法。同时又具有闭包和动态语言中的其…

系统分析师-软件开发模型总结

前言 软件工程模型也称软件开发模型。它是指软件开发全部过程、活动和任务的结构框架&#xff0c;通过该模型能清晰、直观地表达软件开发全过程&#xff0c;明确地规定要完成的主要活动和任务&#xff0c;它奠定了软件项目工作的基础 一、瀑布模型&#xff08;Waterfall Model…

Web Components使用(一)

在使用Web Components之前&#xff0c;我们先看看上一篇文章Web Components简介&#xff0c;其中提到了相关的接口、属性和方法。 正是这些接口、属性和方法才实现了Web Components的主要技术&#xff1a;Custom elements&#xff08;自定义元素&#xff09;、Shadow DOM&#…

网络编程--高并发服务器(二)

这里写目录标题 线程池高并发服务器UDP服务器TCP与UDP机制的对比TCP与UDP优缺点比较UDP的C/S模型实现思路模型分析实现思路&#xff08;对照TCP的C/S模型&#xff09; 二级目录 一级目录二级目录二级目录二级目录 一级目录二级目录二级目录二级目录 一级目录二级目录二级目录二…

STM32 PWM通过RC低通滤波转双极性SPWM测试

STM32 PWM通过RC低通滤波转双极性SPWM测试 &#x1f4cd;参考内容《利用是stm32cubemx实现双极性spwm调制 基于stm32f407vet6》&#x1f4fa;相关视频链接&#xff1a;https://www.bilibili.com/video/BV16S4y147hB/?spm_id_from333.788 双极性SPWM调制讲解以及基于stm32的代码…
最新文章