高质量Python迭代技巧:enumerate()和zip()

Python双变量双条件循环:zip与条件过滤的实战指南 在Python编程中,循环控制是数据处理和业务逻辑实现的基础。其核心原理在于通过迭代器协议遍历序列,并结合条件语句实现流程控制。掌握高效的循环技巧能显著提升代码的可读性和执行效率,尤其在处理多源数据同步、复杂业务规则过滤等场景中具有重要技术价值。例如,在数据清洗、API批量调用、游戏状态更新等应用场景中,经常需要同时遍历多个列表并根据多个条件筛选元素。本文聚焦于使用zip函数实现并行迭代,并结合生成器表达式或itertools模块进行条件过滤,通过具体案例演示如何优雅地实现双变量与双条件循环,解决实际开发中 阅读详情

原创作者:牵引小哥(同名B站Up主)

微信公众号:牵引小哥讲Python

注:转载或复制请注明出处——牵引小哥

本期小哥将简单讲解提高Python代码质量的两个迭代技巧。

1. enumerate()代替range()

假设有一个食物的字符串迭代列表foods,需要给它编号,并输出对应的食物food。最简单常规的「笨方法」是这样:

# 笨方法
foods = ['apple', 'banana', 'lemon', 'milk', 'bread']
for i in range(len(foods)):
    print(f'食物编号 {i} 对应的食物是:{foods[i]}')

运行代码得到:

食物编号 0 对应的食物是:apple
食物编号 1 对应的食物是:banana
食物编号 2 对应的食物是:lemon
食物编号 3 对应的食物是:milk
食物编号 4 对应的食物是:bread

这种方法分别用到了range()和len()函数。最后输出还需要根据索引去访问「foods」中的字符串。无论是看起来还是做起来都有点「复杂!」

那么,在这里小哥推荐使用enumerate()函数。先来看看效果:

# 高级方法,使用 enumerate()代替 range()
for i, food in enumerate(foods):
    print(f'食物编号 {i} 对应的食物是:{food}')

运行代码得到:

食物编号 0 对应的食物是:apple
食物编号 1 对应的食物是:banana
食物编号 2 对应的食物是:lemon
食物编号 3 对应的食物是:milk
食物编号 4 对应的食物是:bread

从结果不难看出,使用enumerate()函数的代码更加简洁。

  • enumerate() 函数用于将一个可遍历的数据对象组合为一个索引序列,同时列出数据和数据下标。并且可以指定下标开始参数。

如果需要食物编号从1开始,那么可以这样写:

for i, food in enumerate(foods, 1):
    print(f'食物编号 {i} 对应的食物是:{food}')

运行代码得到:

食物编号 1 对应的食物是:apple
食物编号 2 对应的食物是:banana
食物编号 3 对应的食物是:lemon
食物编号 4 对应的食物是:milk
食物编号 5 对应的食物是:bread

2. zip()

如果有一群小朋友,他们分别喜欢不同的水果,需要输出每一个小朋友和他对应的水果。这里涉及两个迭代内容,如果只在一层循环中实现,可使用zip()函数。

  • zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

foods = ['apple', 'banana', 'lemon', 'milk', 'bread']
children = ['小赵', '小钱', '小孙', '小李', '小杨']

for child, food in zip(children, foods):
    print(f'{child} 最喜欢的食物是 {food}')

运行代码得到:

小赵 最喜欢的食物是 apple
小钱 最喜欢的食物是 banana
小孙 最喜欢的食物是 lemon
小李 最喜欢的食物是 milk
小杨 最喜欢的食物是 bread

可使用list()输出组合的列表:

list(zip(children, foods))

运行代码得到:

[('小赵', 'apple'),
 ('小钱', 'banana'),
 ('小孙', 'lemon'),
 ('小李', 'milk'),
 ('小杨', 'bread')]

文末福利

各位猿们,还在为记不住API发愁吗,哈哈哈,最近发现了国外大师整理了一份Python代码速查表和Pycharm快捷键sheet,火爆国外,这里分享给大家。

这个是一份Python代码速查表

下面的宝藏图片是2张(windows && Mac)高清的PyCharm快捷键一览图

怎样获取呢?可以添加我们的AI派团队的程序媛姐姐

一定要备注【高清图】哦

????????????????????

➕我们的程序媛小姐姐微信要记得备注【高清图】哦

来都来了,喜欢的话就请分享、点赞、在看三连再走吧~~~

避坑指南:STM32F4的ADC采样FSR传感器,如何稳定读数并校准压力值? 本文详细解析了STM32F4的ADC采样FSR薄膜压力传感器时遇到的读数不稳定和非线性校准问题,提供了从硬件配置到软件滤波的完整解决方案。通过优化ADC设置、改进滤波算法和实施分段线性校准,帮助工程师实现高精度压力测量,特别适用于智能手套和医疗监测等应用场景。 阅读详情

相关推荐

抖音小程序开发 唤起收银台支付(可以选择支付宝APP支付或微信H5支付)

什么都别说,先看效果: 字节跳动也开放了小程序给商家接入,可以在旗下APP如抖音、今日头条、今日头条极速版等应用中即点即用,基于庞大的数亿用户量为其引流,帮助商家获取用户流量,销售商品,其模式和微信小程序差不多。 1、后台管理地址: https://developer.toutiao.com/ 2、开发文档地址: https://developer.toutiao.com/dev/cn/min...

悟空码字的博客 1万+

Python的zip函数和enumerate函数

小张需要把这两个列表对应的元素组合起来,最终得到一个包含了姓名和成绩的列表。这个项目需要处理两个列表,一个是存储了学生姓名的列表,另一个是存储了学生成绩的列表。print("第{}名: {}, 成绩: {}".format(i+1, r[0], r[1]))小张成功地完成了这个任务,同时也掌握了`zip`和`enumerate`两个函数的用法。names = ["张三", "李四", "王五"]names = ["张三", "李四", "王五"]第1名: 张三, 成绩: 90。('李四', 85)

pcaidong_2的专栏 835

无人机通信电台--XBee-PRO 900HP (S3B)

XBee PRO S3B也称为XBee-900HP无线模块,它是一款工作在频段900~928MHz之间,基于FHSS跳频技术的远距离无线数传电台核心模块。常用型号如下: 类别 型号 开发套件 XKB9-DMT-UHP XBee-PRO 900HP (S3B) DigiMesh模块,200Kbps,软天线 XBP9B-DMWT-002 XBee-PRO 900HP (S3B)...

low米的博客 4505

Python常用函数:enumerate()和zip()函数的用法

主要介绍一下Python中常用的enumerate和zip函数的用法。enumerate()函数是Python的内置函数,对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),可以利用enumerate函数同时获取对象的索引和值。

baidu_38662087的博客 1807

系统盘被 1Panel 撑爆了?一键脚本 3 分钟搞定无损迁移!(1Panel如何快速无损的修改安装目录)

很多用户因默认安装导致 1Panel 面板占满系统盘 😱,本文详解了为何常规快照迁移会失效,并提供了通过**一键自动化脚本**实现无损迁移的完美方案 🛠️。无论你是 NAS 用户还是服务器管理员,都能找到安全扩容的最佳实践。

XiaoqiangClub的博客 1281

DSI3协议介绍

分布式系统接口(DSI)是一种通用且功能强大的总线协议,旨在将多个遥感器和执行器设备互连到中央控制模块。该网络的主要目标应用是汽车安全系统。这种应用的一些特点是需要低成本、高鲁棒性、中速互连,仅限于两根导线。此外,它必须具有故障安全性、确定性和良好的EMC特性。即使具有所有级别的智能和可编程性的设备都可以连接到网络,远程设备也必须能够通过简单的状态机实现。由于模块尺寸非常重要,因此中央模块和远程单元中的最小组件至关重要。

汽车电子软件领域知识分享 1万+

Python中的enumerate()和zip()

enumerate()函数描述: enumerate()函数:python内置函数 描述:enumerate()函数一般用于for循环中,可列出序列和下标位置对应的值。 语法: enumerate(sequence, start]) 参数: sequence -- 一个序列、迭代器或其他支持迭代对象。 start -- 下标起始位置的值。 实例:for循环使用enumerate和普通for循环语法 #输出元祖,不加起始值,从0开始 list1= ['a','b','c'

catofblack的博客 2529

杰理SDK入门教程(一):编译环境的安装和程序下载

本文档提供了杰理SDK在Windows系统下的开发环境配置与代码编译指南。主要内容包括:1) 开发环境安装步骤,需下载Code::Blocks和杰理工具链;2) 编译过程中常见问题的解决方案,如安全警告提示和链接文件缺失问题;3) 代码编译流程说明,包括打开工程、连接开发板、执行编译等步骤。文档特别强调了强制升级模式的操作方法,并指出需避免点击运行/调试按钮。最后提示了杀毒软件可能误报工具链的注意事项。

qq_42014563的博客 2744

自己定义与Python内置函数重名的函数,优先使用自己的

def enumerate(a,b): print(a,b) a=[1,2,3] for n,i in enumerate(a): print(n,i) 输出: TypeError: enumerate() missing 1 required positional argument: ‘b’ 可见调用的是自己定义的enumerate,可以理解为函数的作用域重合时的优先级问题。 也可以理解为重名函数以最后定义的为准,就像下面这个例子: def hhh(): print("hhh")

Debug yourself! 2162

秋叶ComfyUI整合包使用FRP实现公网访问教程 ComfyUI内网穿透 秋叶整合包

最近在做 ComfyUI 的实验时,我发现很多小伙伴都遇到一个问题:本地启动的 ComfyUI 服务只能在本地访问,想要通过公网远程访问,就必须借助来实现。作为一名前端开发工程师,我花了点时间把 ComfyUI 启动器和 FRP 配置整合了一下,今天就分享给大家。本文适合已经了解。需要注意的是 穿透到公网的话任何人都能访问 为了安全建议看我另一篇帖子加上密码验证 防止恶意攻击。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1354

华为HCIP的学习大纲和计划

HCIP(华为认证 ICT 高级工程师)核心围绕华为 ICT 技术体系,不同方向(如路由交换、云计算、安全等)课程目录不同,以下是最热门的。

迷逝 578

《Effective Python》第三章 循环和迭代器——总结

在 Python 开发中,迭代器和循环是处理数据的核心工具,尤其在需要高效、安全地遍历数据流时,它们对程序的健壮性和可扩展性至关重要。本文基于《Effective Python》第三章的理论,结合“用户行为分析系统”的代码实现,探讨了如何优雅使用 enumerate、zip、itertools 等工具,避免常见的循环陷阱,并利用迭代器特性提升代码质量。

企业级后端与 AI 应用开发双线探索 918

超详细教程YoloV8官方推荐免费数据集网站Roboflow一键导出Voc、COCO、Yolo、Csv等格式

YoloV8官方推荐了一个数据集网站,就是Roboflow。Roboflow是一个数据集管理平台,提供了免费的数据集,同时也支持上传自己的数据集进行格式转换。使用Roboflow,开发者可以方便地获取所需格式的数据集,无需手动转换格式。此外,Roboflow还提供了多种数据预处理、数据增强等功能,可帮助开发者更好地优化训练数据

Snu77的博客 2万+

如何用在python中迭代一个列表以及字典的索引和值?

本文摘自《编写高质量代码,改善python程序的91个建议》大家有兴趣的可以看看本书。其中列出了很多非常实用的建议。对序列进行迭代并获取序列中的元素。方法一:在每次循环中对索引变量进行自增li = ['a', 'b', 'c', 'd', 'e'] index = 0 for i in li: print "index":,index, "element":, i index +=1方法二

magic的博客 3742

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

编写高质量Python(第8条) 用zip函数同时遍历两个迭代器

源自Effective Python(第二版)

weixin_51335227的博客 195

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

编写高质量Python代码的59个有效方法

    第1章:用Pythonic方式来思考       1.1 确认自己所用的Python版本       1 目前有两个版本的Python处于活跃状态:Python2和Python3. 2 流行的Python运行时(runtime)环境:CPython,Jython,IronPython以及PyPy等。 3 在操作系統的命令行中运行Python时,确保该Python的版本与你使用的Py...

Amberdreams 1382

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

高质量Python编程示例精选

软件的重心在于解决问题,代码的易读性对于编写高质量代码非常重要,例如:清晰的接口及函数定义,统一的代码规范等。

rion1014的博客 755

每日10行代码94:编写高质量python代码方法11——用zip函数同时遍历两个迭代器

在编写python代码时,我们通常要面对很多列表,而这些列表里的对象,可能也是相互关联的。通过列表推导,很容易就能根据某个表达式从源列表推算出一份派生类表。 names = ['Cecilia', 'Lise', 'Marie'] letters = [len(n) for n in names] 对于本例中的派生列表来说,相同索引处的两个元素之间有着关联。如果想平等地迭代这两份列表,那么可以根据names源列表的升序来执行循环。 for i in range(len(names)): count

天天卡丁的博客 264

5个高效循环编写技巧:Learn-python3教你Pythonic的循环实现

Python循环是每个开发者必须掌握的核心技能,但你知道如何写出既高效又优雅的Pythonic循环吗?Learn-python3项目通过专业的Jupyter notebooks教程,为你揭秘Python循环的最佳实践。本文将分享5个实用技巧,帮助你在日常编程中写出更高质量的循环代码。🚀 ## 为什么循环优化如此重要? 在Python编程中,循环是最常用的控制结构之一。一个优化的循环不仅能提升

gitblog_00458的博客 430

Effictive Python:编写高质量Python代码的59个有效方法(1)

第一章 用Pythonic的方式

u010132497的博客 443

【Python】小技巧、性能优化

一、高质量python 参考资料: 《EffectivePython:编写高质量python代码的90个有效方法》 1.使用f-string替代format - ------------ format name = '张三' age = 12 n = 5 content = '{}今年{}岁'.format(name,age) print(content) # 张三今年12岁 content = '{0}今年{1}岁'.format(name,age) print(content) # 张三今年12岁

一个肥宅的博客 1048

《编写高质量Python代码的59个有效方法》——第11条:用zip函数同时遍历两个迭代器...

本节书摘来自华章社区《编写高质量Python代码的59个有效方法》一书中的第11条:用zip函数同时遍历两个迭代器,作者[美]布雷特·斯拉特金(Brett Slatkin),更多章节内容可以访问云栖社区“华章社区”公众号查看 第11条:用zip函数同时遍历两个迭代器在编写Python代码时,我们通常要面对很多列表,而这些列表里的对象,可能也是相互关联的。...

weixin_33722405的博客 163

《Effective Python 编写高质量Python代码的59个有效方法》学习笔记2

Effective Python

python收藏家的博客 637

编写python高质量python代码的59个有效方法

第1条:确认自己的python版本 第2条:遵循PEP8的风格   1.空格 对于 占据多行的长表达式来说, 除了首行之外的其余各行都应该在通常的缩进级别上再加4个空格。 每行字符数不应该超过79。   2.命名 受保护的实例属性命名, 应该以单个下划线开头, 例如:_leading_underscore。 私有属性的命名, 应该以双下划线开头,例如: __l...

weixin_30404405的博客 136

effective python 90个有效方法_对<Effective Python: 编写高质量Python代码的59个有效方法>中知识点的总结和扩展...

不要使用含有两个以上表达式的列表推导列表推导支持多级循环,也支持多个条件判断,但最好不要写太多,不然代码很难懂。建议:2个条件,2个循环,或者1个条件1个循环.使用生成器表达式来改写数据量较大的列表推导生成器真的是Python中极为强大的一个功能,它与列表推导的不同在于:列表推导得到的是一个实实在在的列表,而生成器得到的是一个算法,通过这个算法可以一项一项计算得到我们想要的结果,这样做就带来了一个...

weixin_31105189的博客 550

【Python】使用31条规则编写高质量且美丽的Python代码

Raymond Hettinger在pycon US 2013 视频,幻灯片上的讲话。 代码示例和直接引用都来自Raymond的演讲。我在这里复制它们是为了我自己的启发和希望别人会发现它们像我一样方便! 原文:https://github.com/JeffPaine/beautiful_idiomatic_python   基础 1、循环一系列数字 for i in [0, 1, 2...

探索世界,改变世界 2689
上一篇: CNN(经典卷积神经网络)来了!
下一篇: Python 你可能从未听说过的5种隐藏技巧
Wang_AI
博客等级 码龄12年 996粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值