【机器学习】Python zip 函数

news2025/1/18 10:03:01

目录:

  1. 什么是zip函数
  2. zip的基本使用
  3. zip与列表、字典的结合
  4. zip的长度匹配规则
  5. 实际应用

1. 什么是zip函数

zip函数在Python中用于将多个可迭代对象(如列表、元组、字符串等)打包成一个元组的列表,其中每个元组包含的是原始对象中的对应元素。

换句话说,它像是一根神奇的针线,将不同序列的相同位置的元素缝合在一起,形成新的组合。

这种方式非常适合处理需要同步遍历多个列表的情况。

2. zip的基本使用

首先,让我们通过一个简单的例子感受zip的魅力:

# 定义两个列表,一个代表山海经中的奇珍异兽名称,另一个代表它们的栖息地
creatures = ['白泽', '夔牛', '凤凰']
habitats = ['昆仑山', '不周山', '蓬莱岛']

# 使用zip函数将两者配对
paired_data = zip(creatures, habitats)

# 打印配对结果
for creature, habitat in paired_data:
    print(f"{creature} 居住在 {habitat}")

输出结果:

白泽 居住在 昆仑山
夔牛 居住在 不周山
凤凰 居住在 蓬莱岛

这里,zip(creatures, habitats)创建了一个迭代器,每次迭代都会产出一对来自两个列表的元素。通过for循环遍历这个迭代器,我们可以清晰地看到每种异兽与其栖息地的对应关系。
eg:
在这里插入图片描述

3. zip与列表、字典的结合

zip不仅能帮助我们并行遍历数据,还能与其他数据结构结合,实现更复杂的功能。

比如,将配对后的数据直接转换为列表或字典,可以进一步方便数据的管理和检索。

1、转换为列表

creatures = ['白泽', '夔牛', '凤凰']
habitats = ['昆仑山', '不周山', '蓬莱岛']
# 将zip结果转换为列表
paired_list = list(zip(creatures, habitats))
print(paired_list)

输出结果:

[('白泽', '昆仑山'), ('夔牛', '不周山'), ('凤凰', '蓬莱岛')]

2、构建字典

当我们想要根据一种属性(如名字)快速查找另一种属性(如栖息地)时,将zip的结果直接转换为字典非常有用。

creatures = ['白泽', '夔牛', '凤凰']
habitats = ['昆仑山', '不周山', '蓬莱岛']
#使用zip和dict构造字典,以奇珍异兽名为键,栖息地为值
creature_habitat_dict = dict(zip(creatures, habitats))
print(creature_habitat_dict)

输出结果:

{'白泽': '昆仑山', '夔牛': '不周山', '凤凰': '蓬莱岛'}

这样,通过名字查询栖息地就变得异常简单,只需一行代码:print(creature_habitat_dict[‘白泽’])即可得到“昆仑山”。
在这里插入图片描述

4. zip的长度匹配规则

值得注意的是,当使用zip合并不同长度的序列时,最终生成的配对数量由最短的序列决定。

这意味着如果一个列表比其他列表短,多出来的元素会被忽略。

habitats = ['昆仑山', '不周山', '蓬莱岛']
creatures_extra = ['麒麟']  # 新增一个异兽
paired_with_extra = list(zip(creatures_extra, habitats))
print(paired_with_extra)

输出结果:

[('麒麟', '昆仑山')]

在这个例子中,尽管habitats列表中有三个元素,但由于creatures_extra只有一个元素,因此只产生了单个配对。
在这里插入图片描述

5. 实际应用

在实际工作中,zip能够极大地提升数据处理的效率,尤其是在数据分析、报表生成等领域。

比如,假设你正在处理一份销售数据,包括产品名称和对应的销售额,使用zip可以迅速将这些数据整合,进而进行排序、筛选或是转换为报表格式。

products = ['灵芝', '人参果', '仙桃']
sales = [1200, 850, 975]

#结合zip和排序,找出销售额最高的产品
sorted_sales = sorted(zip(products, sales), key=lambda x: x[1], reverse=True)
print(sorted_sales)

输出结果:

[('灵芝', 1200), ('仙桃', 975), ('人参果', 850)]

通过这样的方式,你不仅能够迅速识别出最畅销的产品,还能灵活地调整排序逻辑,满足不同的分析需求。
在这里插入图片描述

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

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

相关文章

邀请函 | 极限科技全新搜索引擎 INFINI Pizza 亮相 2024 可信数据库发展大会!

过去一年,在全球 AI 浪潮和国家数据局成立的推动下,数据库产业变革不断、热闹非凡。2024 年,站在中国数字经济产业升级和数据要素市场化建设的时代交汇点上,“2024 可信数据库发展大会” 将于 2024 年 7 月 16-17 日在北京悠唐皇冠…

使用vite官网和vue3官网分别都可以创建vue3项目

问: npm init vitelatest 和 npm create vuelatest创建的vue3项目有什么区别? 回答: npm init vitelatest 和 npm create vuelatest 分别是使用 Vite 和 Vue CLI 工具创建 Vue 项目的两种方式,它们之间有几个主要区别: 1. **构建工具:** …

WIFI模组ESP-12F 规格书分享

一、 产品概述 ESP-12F 是由安信可科技开发的 Wi-Fi 模块,该模块核心处理器 ESP8266 在较小尺 寸封装中集成了业界领先的 Tensilica L106 超低功耗 32 位微型 MCU,带有 16 位精 简模式,主频支持 80 MHz 和 160 MHz,支持 RTOS&…

【PB案例学习笔记】-25制作一个带底图的MDI窗口

写在前面 这是PB案例学习笔记系列文章的第25篇,该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码,小凡都上传到了gite…

什么是未授权访问漏洞?Hadoop Redis靶场实战——Vulfocus服务攻防

什么是未授权访问漏洞?Hadoop & Redis靶场实战——Vulfocus服务攻防 一、介绍 未授权访问,也称为未经授权的访问或非法访问,是指在没有得到适当权限或授权的情况下,个人或系统访问了网络、计算机、数据库、文件、应用程序或…

C语言 | Leetcode C语言题解之第205题同构字符串

题目&#xff1a; 题解&#xff1a; struct HashTable {char key;char val;UT_hash_handle hh; };bool isIsomorphic(char* s, char* t) {struct HashTable* s2t NULL;struct HashTable* t2s NULL;int len strlen(s);for (int i 0; i < len; i) {char x s[i], y t[i]…

DETR End-to-End Object Detection with Transformers

End-to-End Object Detection with Transformers 论文链接&#xff1a;http://arxiv.org/abs/2005.12872 代码地址&#xff1a;https://github.com/facebookresearch/detr 一、摘要 提出了一种将目标检测视为直接集合预测问题的新方法。该方法简化了检测流程&#xff0c;有效…

【TB作品】20以内加减法训练机,ATMEGA128单片机,Proteus仿真

题目 7 &#xff1a;玩具电子琴 基于单片机设计一能够发出中音八个音阶的音乐信号的电子琴&#xff0c;能够实现弹奏和音符显示功 能。 具有 8 个音阶按键&#xff0c;每按下一个按键时&#xff0c;所对应的 LED 点亮&#xff0c;音符进行显示。 具体要求如下&#xff1a; &…

微积分-导数3(微分法则)

常见函数的导数 常量函数的导数 d d x ( c ) 0 \frac{d}{dx}(c) 0 dxd​(c)0 常量函数的图像是一条水平线 y c y c yc&#xff0c;它的斜率为0&#xff0c;所以我们必须有 f ′ ( x ) 0 f(x) 0 f′(x)0。从导数的定义来看&#xff0c;证明也很简单&#xff1a; f ′ …

系统工程与信息系统基础(上)

目录 系统工程 霍尔三维结构的三维&#xff1a; 切克兰德方法&#xff1a; 并行工程方法&#xff1a; 综合集成法&#xff1a; WSR系统方法&#xff1a; 系统工程生命周期阶段 探索性阶段 概念阶段 开发阶段 生产阶段 使用阶段 保障阶段 退役阶段 系统工程生命周…

sky18流水线设计

1.最大时钟频率确定 时钟周期要大于等于组合逻辑的delay&#xff08;最大的那条delay&#xff09; Freq_max(Mhz) 1000/T_delay(ns); 数据吞吐率Throughput Freq_max *Toggle_rate;//Toggle_rate&#xff1a;如两个时钟&#xff0c;输入变一次&#xff0c;就是50%&#xff1b…

业务链SFC简介

目录 业务链&#xff08;SFC&#xff09;简介什么是业务链&#xff1f;业务链的体系架构业务链的基本工作流程PBRPBR实现的SFC工作流程 NSHNSH报文NSH实现的SFC工作流程 区别 业务链的应用 配置指南 业务链&#xff08;SFC&#xff09;简介 业务链是网络功能虚拟化&#xff08…

javascript v8编译器的使用记录

我的机器是MacOS Mx系列。 一、v8源码下载构建 1.1 下载并更新depot_tools git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git export PATH/path/to/depot_tools:$PATH 失败的话可能是网络问题&#xff0c;可以试一下是否能ping通&#xff0c;连…

【轻量化】YOLOv8 更换骨干网络之 MobileNetv4 | 《号称最强轻量化网络》

论文地址:https://arxiv.org/pdf/2404.10518 代码地址:https://github.com/tensorflow/models/blob/master/official/vision/modeling/backbones/mobilenet.py 文章速览 文章摘要 MobileNetV4引入了一个名为Universal Inverted Bottleneck (UIB) 的新搜索模块,这个模块融合…

vue 组件el-tree添加结构指示线条

效果展示: 注意&#xff1a;组件中需要添加:indent"0" 进行子级缩进处理&#xff0c;否则会出现子级缩进逐级递增 :expand-on-click-node"false" 设置点击箭头图标才会展开或者收起 代码&#xff1a; <el-tree class"tree filter-tree" :da…

高并发场景下的热点key问题探析与应对策略

目录 一、问题描述 二、发现机制 三、解决策略分析 &#xff08;一&#xff09;解决策略一&#xff1a;多级缓存策略 客户端本地缓存 代理节点本地缓存 &#xff08;二&#xff09;解决策略二&#xff1a;多副本策略 &#xff08;三&#xff09;解决策略三&#xff1a;热点…

商标字体的选择:企业和个人申请注册商标攻略!

对于汉字商标&#xff0c;就会涉及到字体的选择&#xff0c;普推商标老杨也经常看到企业因为文字商标字体侵权收到相关字体公司的律师函&#xff0c;所以商标字体选择上要特别注意。 建议选择可以商用的免费字体&#xff0c;常见的有黑体、宋体等&#xff0c;如果这些字体前面…

vue 组件批量删除

element ui table表格中前面这个勾选框 对应 type"selection" 属性&#xff0c;绑定事件时selection-change,当你勾选全面的框时就会触发selection-change 对应的事件 绑定事件里面这样定义方法时&#xff0c;这个val 就是选中的时候那一行的数据&#xff0c;如下图…

数学建模(1):期末大乱炖

1 概述&#xff01;&#xff01; 1.1 原型和模型 原型&#xff1a;客观存在的研究对象称为原型&#xff0c;也称为“系统”、“过程”。 机械系统、电力系统、化学反应过程、生产销售过程等都是原型&#xff1b; 研究原型的结构和原理&#xff0c; 从而进行优化、预测、评价…

02.Linux下安装FFmpeg

目录 一、下载FFmpeg的编译源码 二、编译源码 三、ffmpeg工具结构解析 1、bin目录 2、include库 3、lib库 四、注意事项 五、可能出现的一些问题 1、某些工具未安装/版本过久 2、缺少pkg-config工具 3、缺少ffmplay FFmpeg 是一个开源的跨平台音视频处理工具集&…