python生成器和迭代器的区别

2022-05-22科技437

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

迭代器

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

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

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

生成器

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

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

相关文章

疑犯追踪肖和根是从哪集开始出现的?

肖是第二季第16集出场,根是第一季23集出场。相关剧情介绍机器提供了一个心理学家的号码,Reese必须保护她(Amy Acker)躲过一名病人的追杀,同时避免被快速赶来的联邦探员逮捕——以前从来都是Reese监视别人,现在Reese自己被困在一个受到密切监控的地方。本集的可疑对象(POI)是美貌性感...

早恋会有结果吗?

不能说的那么肯定,比如我父母早恋初中一直到结婚,现在有我和弟弟两个孩子。 但是我就没有,我也早恋初一谈了一个对象,十五天分手了,不知道为什么念念不忘,喜欢他五年,卑微极了。他谈对象我就等,没对象我就追,每次追他就一句话我累了,现在不想谈,两天一过又谈了一个对象,还是不理智,我也不明白当时为什么喜欢他...

人像摄影如何拍摄出翘臀效果?

人像摄影是大多数摄影爱好者喜欢拍摄的主题。那么如何拍摄出曲线美的人像,凸显翘臀美感呢?要拍摄完美翘臀,这对拍摄对象的身材要求较高。然而大多数人都没完美的翘臀。那这里我们分两种情况介绍:一是本身拍摄对象就是身材完美的模特;二是普通的小姐姐,没有那么完美的身段。 1. 本身拍摄对象就是一个前凸后翘,有完...

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

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

你们知道正太控是什么么?

正太控是指对少年抱有强烈喜爱以及产生“萌”感觉的人,亦指对3至16岁左右之未成年男孩、少年本身及以这两者为对象之绘画少年、漫画、动画、小说抱有强烈喜好(萌)的人们,对象为少女则称为萝莉。 当初多用于成年女性有此种喜好之场合,近年成年男性之此种喜好亦在增加。有时也用作喜欢以比自己年纪小的男...

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

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

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

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

电脑系统是什么意思啊?

电脑系统即电脑操作系统(computer operating system):是计算机系统中的一个系统软件,它是这样一些程序模块的集合,它们管理和控制计算机系统中的软件资源,合理地组织计算机工作流程以便有效地利用这些资源为用户提供一个功能强大、使用方便和可扩展的工作环境,从而在计算机与其用户之间起到...

请问这几块主板有什么区别?

给你网址你看看就知道了: 华硕 P5B-E PLUS : 华硕 P5B-V : 华硕 P5B-E : 华硕 P5B : 华硕 P5B Deluxe : 其中的P5B-E PLUS 和P5B Deluxe做工很好,值得购买! 但是题外话,华硕的板最近不是很好,我建议你购买技嘉的...

明天就要去相亲了,第一次相亲,相亲是什么样的感觉,可以说一说吗?

头一次相亲没感觉你信吗?虽然是头一次也成了最后一次,那个年代人象个傻子一样,男女不说话,下乡不让搞对象,返城已二十四岁了,还没有对象,给妈急的托人给我介绍对象,介绍人先上我家去了一趟,看见我问我,你还没上学呀?又过了几天,我正要出门上四点班,妈说人家来了,在介绍人家,我说不去,妈说去看一眼吧,人家大...

有两台老电脑如何合并成一台性能好点的电脑?

纯手打,望采纳 多台旧电脑组合成一台,前提条件是:核心部件平台搭配才可以,翻译成人话就是接口得一样才可以。 首先,要确定下旧电脑的具体配置,具体到型号,因为CPU接口分好多种,内存也有ddr2、ddr3、ddr4之分,硬盘接口有sata2、sata3、m.2之分,所以如果这几台旧电脑只有接口统一,才...

USB是什么意思?

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