python生成器和迭代器的区别

2022-05-22科技384

迭代器和生成器都是Python中特有的概念,迭代器可以看作是一个特殊的对象,每次调用该对象时会返回自身的下一个元素,从实现上来看,一个可迭代的对象必须是定义了__iter__方法的对象,而一个迭代器必须是定义了__iter__方法和next方法的对象。生成器的概念要比迭代器稍显复杂,因为生成器是能够返回一个迭代器的函数,其最大的作用是将输入对象返回为一个迭代器。Python中使用了迭代的概念,是因为当需要循环遍历一个较大的对象时,传统的内存载入方式会消耗大量的内存,不如需要时读取一个元素的方式更为经济快捷。

迭代器

迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址。迭代器修改了常规指针的接口,所谓迭代器是一种概念上的抽象:那些行为上像迭代器的东西都可以叫做迭代器。然而迭代器有很多不同的能力,它可以把抽象容器和通用算法有机的统一起来。

迭代器提供一些基本操作符:*、++、==、!=、=。这些操作和C/C++“操作array元素”时的指针接口一致。不同之处在于,迭代器是个所谓的复杂的指针,具有遍历复杂数据结构的能力。其下层运行机制取决于其所遍历的数据结构。因此,每一种容器型别都必须提供自己的迭代器。事实上每一种容器都将其迭代器以嵌套的方式定义于内部。因此各种迭代器的接口相同,型号却不同。这直接导出了泛型程序设计的概念:所有操作行为都使用相同接口,虽然它们的型别不同。

迭代器使开发人员能够在类或结构中支持foreach迭代,而不必整个实现IEnumerable或者IEnumerator接口。只需提供一个迭代器,即可遍历类中的数据结构。当编译器检测到迭代器时,将自动生成IEnumerable接口或者IEnumerator接口的Current,MoveNext和Dispose方法。

生成器

生成器是一次生成一个值的特殊类型函数。可以将其视为可恢复函数。调用该函数将返回一个可用于生成连续 x 值的生成器【Generator】

简单的说就是在函数的执行过程中,yield语句会把你需要的值返回给调用生成器的地方,然后退出函数,下一次调用生成器函数的时候又从上次中断的地方开始执行,而生成器内的所有变量参数都会被保存下来供下一次使用。

相关文章

男朋友有女的发小,你们能接受吗?为什么?

怎么不能接受,那是他小时候的记忆值得信赖的朋友。 发小是较有特色的北京发音。随着各地之间的交流加剧,已经逐步扩散于北方和南方。发小于同性之间叫作总角之交,异性之间叫作青梅竹马。 “发小”的意思,相当于南方的“开裆裤朋友”或东北的“光腚娃娃”。发小之间的友谊,其或可是不亚于亲兄弟姐妹之间的感情,发小并...

开机出现Warning!The previous overclocking had failed……怎么回事?

具体步骤如下: 1、首先,把内存条取下,然后安装在另一个插槽里。 2、然后把CMOS电池取下,放手心握住一会儿放电,然后重新装上CMOS电池。 3、然后把主板上南桥、北桥按一按,使其接触良好。最后把再检查一下其他接口连接情况,取下并重新连接。 4、启动电脑,这时发现故障已经排除了,能够正常启动,即可...

如何反驳别人说的“我这都是为了你好”?

“我都是为你好”,这是最自私的一句话,和“你应该”同理! “我都是为了你好”,父母和周围的人常常说这样的话,去劝说自己该找对象,该结婚了。他们是怎样一种心理?难道找对象结了婚我就好了吗?找了对象结了婚,我的人生就开挂了?我的人生从此就高枕无忧了吗?我的生活从此就圆满结束了?好个**啊! 如果好,那现...

检察院没有搜查令进行搜查是什么行为?

警察搜查需要出示搜查令。如果警察不出示搜查令,当事人可以向上级机关或检察院投诉,要求赔偿损失。除了搜查令,警察搜索还需要出示警官证,并且搜查人员必须在二人以上。。《中华人民共和国刑事诉讼法》第十九条规定:人民检察院在对诉讼活动实行法律监督中发现的司法工作人员利用职权实施的非法拘禁、刑讯逼供、非法搜查...

请问警察上门搜查是否要出示搜查令?

1、如果不存在紧急情形,搜查人员必须出示搜查证,搜查人员的行为是不正当的,你可以拒绝被搜查,如果强行被无证搜查了,你也可以向上级机关或检察院投诉,要求赔偿损失。2、另外,情况紧急不需要搜查令的情况,也不仅仅是警察说了算的,前提是“在执行逮捕或拘留时”,因此对象需要符合逮捕或拘留的条件。逮捕是有证据证...

两男争一女,我该如何做?

两男争一女通常都是三角恋关系,主人公以前都是很好的朋友或者是兄弟,但是当他们喜欢上同一个女孩子是就会变成竞争对手和仇人了,整天都会在哪里斗的你死我活的,在外加自己和对方比谁比较强悍,你说对方什么什么不好,对方也说你什么什么不好,这个时候女方就会就会觉得很自豪,等到梦醒了以后两个男的就会发现为了一个女...

6988的神舟和6999的拯救者,选哪个?

6988神舟和6999拯救者,选哪个? 神州笔记本,又名神舟电脑。神舟电脑拥有世界一流的生产设备,年产200万台笔记本、100万台式机、100万台液晶显示器和50万台屏式电脑的巨大产能,正因此,也为神舟的突飞猛进打下了坚实的基础。 神舟笔记本以高性价比得到了消费者的喜爱,神舟的笔记本细分为天运、承运...

哪些是让你一眼万年的女明星?

一眼万年的女明星个个气质不凡。有楚楚动人,风情万种,国色天香,风姿绰约,光彩照人的共同特征。 世上男女都是审美的万物之灵。看到惊为天人的美女,心会为之一动。爱美之心人皆有之。世界上有思维有灵魂有创意的美女,是灵动的,风情万种楚楚动人美妙无比的。为绝色美女迸然心动,是正常人审美心理的正常反应。 女明星...

游戏的引擎到底是什么,它在游戏中起到什么作用?

所谓游戏引擎,简单地来说,就是一组专门用于游戏编程的API(Application Programming Interface,应用程序编程接口,不懂编程的可以简单粗暴地理解为一组函数)的集合。使用游戏引擎,能够简化我们的游戏编程工作。 为了便于大家理解,我举个比较容易明白的编程方面的类似例子。比如...

当代社会,为什么人和商品都要进行包装,包装的目的是什么?

说明:本题的“物”其实已物化为人,所以,该题目本义是问人为什么喜欢“美”和追求“美”,就不再说“物”的问题了,下面回答提问。 “美”这个字我们谁都认识,对什么是“美”大家也都有自己的认识和见解,特别的是人人都在想美事、做美事。哪么为什么人喜欢美呢(其实是人类喜欢美,但题目太大,我掌控不了,扯得太远了...

USB是什么意思?

1、USB,是英文Universal Serial Bus(通用串行总线)的缩写,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。是应用在PC领域的接口技术。 2、USB接口支持设备的即插即用和热插拔功能。USB是在1994年底由英特尔、康柏、IBM、Microsoft等多家公司联合提出的。...

可以分享一些你摘抄的经典句子吗?

孟子说:“人之相识,贵在相知;人之相之,贵在知心”。 爱的重要特征之一,在于爱着与被爱着的人,从来都不是对方的附属品。而是永远把爱着的对象视为独立的个体,尊重对方的独立和成长,彼此依赖却又相互独立。一一夏洛蒂.勃朗特《简爱》 书读得越多而不加思索,你就会觉得你知道得很多。而当你读书而思考得越多的时候...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。