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

本文主要是介绍如何将几个长度相同的列表并列组合在一起(附: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]))

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

四、一点思考

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

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

这篇关于如何将几个长度相同的列表并列组合在一起(附:zip函数使用出错原因:巨坑~)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/857910

相关文章

python使用库爬取m3u8文件的示例

《python使用库爬取m3u8文件的示例》本文主要介绍了python使用库爬取m3u8文件的示例,可以使用requests、m3u8、ffmpeg等库,实现获取、解析、下载视频片段并合并等步骤,具有... 目录一、准备工作二、获取m3u8文件内容三、解析m3u8文件四、下载视频片段五、合并视频片段六、错误

javax.net.ssl.SSLHandshakeException:异常原因及解决方案

《javax.net.ssl.SSLHandshakeException:异常原因及解决方案》javax.net.ssl.SSLHandshakeException是一个SSL握手异常,通常在建立SS... 目录报错原因在程序中绕过服务器的安全验证注意点最后多说一句报错原因一般出现这种问题是因为目标服务器

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

Windows下C++使用SQLitede的操作过程

《Windows下C++使用SQLitede的操作过程》本文介绍了Windows下C++使用SQLite的安装配置、CppSQLite库封装优势、核心功能(如数据库连接、事务管理)、跨平台支持及性能优... 目录Windows下C++使用SQLite1、安装2、代码示例CppSQLite:C++轻松操作SQ

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.