python3迭代器与生成器

迭代器

迭代是访问集合元素的一种方式,是一个可以遍历记住的位置的对象
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

迭代器有两个基本的方法:iter()和next()
在这里插入图片描述

StopIteration

StopIteration 异常用于标识迭代的完成,防止出现无限循环的情况

生成器

在python中,使用yield的函数被称为生成器(generator)
yield是一个关键字,用于定义生成器函数,生成器函数是一种特殊的函数,可以在迭代过程中逐步产生值,而不是一次性返回所有结果。
跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。

当在生成器函数中使用yield语句时,函数的执行将会暂停,并将yield后面的表达式作为当前迭代的值返回
然后,每次调用生成器的next()方法或使用for循环进行迭代时,函数会从上次暂停的地方继续执行,直到再次遇到yield语句,这样生成器函数可以逐步产生值,而不需要一次性计算并返回所有的结果。

调用一个生成器函数,返回的是一个迭代器对象。

例:如下展示课生成器函数的使用
在这里插入图片描述
以上实例中,countdown 函数是一个生成器函数。它使用 yield 语句逐步产生从 n 到 1 的倒数数字。在每次调用 yield 语句时,函数会返回当前的倒数值,并在下一次调用时从上次暂停的地方继续执行。

通过创建生成器对象并使用 next() 函数或 for 循环迭代生成器,我们可以逐步获取生成器函数产生的值。在这个例子中,我们首先使用 next() 函数获取前三个倒数值,然后通过 for 循环获取剩下的两个倒数值。

tips:生成器函数的优势是他们呢可以按需生成值,避免一次性生成大量数据并占用大量内存。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TIDB拓扑结构

TiDB Server:SQL层,负责接受客户端的连接,执行SQL解析和优化,最终生成分布式执行计划。TiDB Server为无状态的,可增加节点负载均衡。 PD (Placement Driver) Server:整个TiDB集群的元信息管理模块&#xf…

2023APMCM亚太杯数学建模选题建议及初步思路

大家好呀,亚太杯数学建模开始了,来说一下初步的选题建议吧: 首先定下主基调,本次亚太杯推荐选择B题。 C题如果想做好,搜集数据难度并不低,并且模型比较简单,此外目前选择的人数过多&#xff0c…

G320E是一种低荣声、固定频率的电荷泵型DC/DC转换器

G320E 低噪声电荷泵DC/DC转换器 产品概述: G320E是一种低荣声、固定频率的电荷泵型DC/DC转换器,在输入电压范围在2.7V到5.0V的情况下,该器件可以产生5V的输出电压,最大输出电流达到300mA.G320E外部元件少,非常适合于…

SSM人事请假签到管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 SSM人事请假签到管理系统是一套完善的完整人事请假薪酬加班管理,结合SSM框架完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库,系统…

PLC通过lora网关采集温室大棚温湿度数据

概述: 运用lora网关远程控制大棚内风机,日光灯,温湿度传感器等设备。可以实现远程获取现场环境的空气温湿度、土壤水分温度、二氧化碳浓度、光照强度可以自动控制温室湿帘风机、喷淋滴灌、加温补光等设备,并向远程计算机端推送实时数据&…

可以在uni-app使用的类vconsole.js插件

兴致勃勃在uni-app项目引入调试工具vconsole.js结果真机调试页面空白 怎么办?! 别着急 paradox老师有方法 替代插件下载地址:直接下载插件并引入HbuilderXuni_modules插件 - 类Vconsole APP端调试工具 - HF调试器 - DCloud 插件市场 下载完成在main.js中引入&…

世微 多功能 LED降压型恒流芯片内置2.2A LED摩托车灯 全亮 半亮 爆闪 AP2403

产品描述 AP2403 是一款 PWM 工作模式,内置功率管,适用于 5-100V 输入的高精度降压 LED 恒流驱动芯片。输出功率可达 22W,电流 2.2A。AP2403 可实现三段功能切换,通过 MODE1/2/3 切换三种功能模式:全亮,半亮&#xff0…

2020年09月 Scratch(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 执行下面程序,屏幕上最多会看到多少个苹果? A:10个 B:11个 C:1个 D:无法确定 答案:B 第2题 关于下面程序,说法正确的是 ? A:执行 后,马上执行

Ubuntu开机显示No bootable devices found

Ubuntu开机报错,显示显示No bootable devices found,如下图所示: 解决方案如下: 1. F2进入BIOS (1) 重启开启,按F2进入BIOS系统。 (2) 进入Boot Sequence,目前系统选择了UEFI,而Legacy选项为…

餐饮门店做小程序的作用是什么

我国餐饮行业市场规模逐步上升,中国到店餐饮平台致力于做深做透大餐饮的战略布局,从营销、配送、IT系统、供应链等多角度全方位服务餐饮行业,数字化赋能商家,促进线上线下融合发展,以形成餐饮行业生态闭环。 餐饮行业…

RabbitMQ快速学习之WorkQueues模型、三种交换机、消息转换器(SpringBoot整合)

文章目录 前言一、WorkQueues模型消息发送消息接收能者多劳 二、交换机类型1.Fanout交换机消息发送消息接收 2.Direct交换机消息接收消息发送 3.Topic交换机消息发送消息接收 三、编程式声明队列和交换机fanout示例direct示例基于注解 四、消息转换器总结 前言 WorkQueues模型…

来聊聊JVM中的类加载过程以及双亲委派模型(学习Java必知内容)

文章目录 1. 类加载过程加载验证准备解析初始化 2. 双亲委派模型一个类的加载流程双亲委派模型的优点 总结 1. 类加载过程 在整个 JVM 执行过程中, 和我们程序员关系最密切的就是类加载的过程, 所以接下来我们来看下类加载的执行流程. 对于一个类来说, 它的生命周期是这样的:…