问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

python系列之生成器和迭代器的一些辨析和应用

发布网友 发布时间:2024-10-01 23:16

我来回答

1个回答

热心网友 时间:2024-11-29 03:00

1. 相关对比1.1 可迭代对象和迭代器的对比

1.迭代器只能遍历一次,可迭代对象可以进行多次遍历 2.迭代器只能前进,不能后退 3.迭代器必须在内部同时实现iter方法和next方法,可迭代对象实现了iter方法,不一定会实现next方法

1.2 迭代器和生成器的对比

1.迭代器必须在内部同时实现iter方法和next方法。而生成器是一种特殊的迭代器,内部支持了生成器协议,不需要再明确实现iter方法和next方法,语法上更为简洁

2.生成器是用于生成元素的,迭代器是用于访问元素的

3.生成器是一种特殊的迭代器,迭代器输出生成器的内容

1.3 yield和return的对比1.3.1 yield

使用了yield关键字的函数就不再是函数,而是生成器。

代码执行到yield会暂停,然后把结果返回回去,下次启动时生成器会在暂停的位置继续往下执行。

每次启动生成器都会返回一个值,多次启动可以返回多个值。

1.3.2 return

只能返回一次值,代码执行到return语句就停止迭代

1.4 迭代器和for循环的区别

迭代器:

迭代器必须同时实现iter和next方法。对于迭代器来说,iter返回的是自身self,因此迭代器只能遍历一次。next返回迭代器的下一个元素,没有元素则抛出异常,会暴露给开发者。

For循环:

(1) 当循环对象为迭代器时,调用iter返回自身,调用next方法按顺序返回迭代器中的值,迭代到最后会抛出StopIteration异常

(2) 当循环对象为可迭代对象时,调用iter每次返回一个独立的迭代器(这里与迭代器的iter不同),可以保证不同的迭代过程互不影响,因此可以遍历多次。然后调用next方法按顺序返回迭代器中的值,迭代到最后会抛出StopIteration异常,这个异常不会暴露给开发者

2.综合应用2.1 反向迭代2.1.1 reversed()方法

reversed()方法本质上是调用了内部的reversed方法,如果对象内部没有实现reversed方法,则不能使用reversed()方法来完成反向迭代

list1=["西安","上海","苏州","郑州","武汉"]forcityinreversed(list1):print(city)

result:

武汉郑州苏州上海西安2.1.2 自定义reversed方法classSequence:def__init__(self,n):self.n=ndef__iter__(self):start=0whilestart<self.n:yieldstartstart+=1def__reversed__(self):start=self.n-1whilestart>=0:yieldstartstart-=1sequence=Sequence(5)fornuminsequence:print(num)

result:

01234fornuminreversed(sequence):print(num)

result:

43210```python系列之生成器和迭代器
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
不想要淘宝原来的帐号,怎么办,可以注销吗~谢谢了,大神帮忙啊 蓝宝石HD6770显卡求鉴定,GPUZ检测数据如下: 健身60公斤,176身高的人,比较瘦,是不是即便经常锻炼,力气也不一定比胳膊... 农村土地什么情况不予发证?如何解决? 共工治水在前还是怒触不周山在前? 共工触山的故事 有什么类似漂流瓶的软件推荐 漂流瓶软件推荐 保险柜密码怎么改 保险柜密码正确但是打不开怎么办 西安水多少钱一顿 西安哪里可以买自来水 Python深入理解迭代器和生成器 数学初二的题,下半年的分式运算和约分! 速冻水饺是怎么做的 动画片mp4下载的方法有哪些呢? 北京去大连 西京学院基础部概述 西京学院数学建模协会数学建模协会章程(试行) 怎样写考试后的反思 怎样写反思总结 我的电脑上面装了一个360浏览器,我想换成开机自带的浏览器,请问... ...皮肤文件版本太低,需要重新安装浏览器,请问该怎么安装? ≥15L换算等于多少立方米 0.015um等于多少km 做了BBT消融手术后有点问题想咨询一下 如何配置一定量浓度的溶液? BBT宫颈修复系统术后注意事项 如何看好友删除了我微信的朋友圈 户外团建有什么活动? 24岁美国妹子“整”成「金刚芭比」全网爆红,5年后对比照曝光吓傻网友... 从医学界貂蝉,健美成金刚芭比,时尚与力量的完美结合,有多飒? 浅入深出|彻底理解Python中的yield 学会Python yield 关键词,看这一篇文就够了 云龙湾的介绍 嬅其他信息 朴春减肥11公斤拟复出,是否能够复出成功? 朴春瘦了11kg,你喜欢现在的她还是以前的她? 朴春减肥后照片发出,减肥对一个人的外貌影响大吗? 朴春减重11公斤,过度强调减肥会不会导致社会减肥风气加剧? 男友微信从来都不主动找我说话,都是我找他。也从来没主动给我打过一个... 高考语文核按钮综合训练九答案谁有,急求 急求07~09宁夏全部高考试卷,W我的邮箱shuai333@163.com 为什么我的苹果8p触控失灵了呢? qq红包提现要填写那些信息会不会骗人 光大银行信用卡查询进度 ai取代的行业 彩钢瓦屋顶安装光伏电站的流程有哪些? te是什么元素 化毒汤大全《活人书》卷二十一 蛤粉散作用与功效,有什么副作用? 华佗有没有看过张仲景的书?