在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
Python开发生成器和迭代器的区别?迭代器是一个更抽象的概念,任何对象;迭代器对象,它在容器中逐个访问容器内元素,next()也是 python 的内置函数。
迭代器是一个更抽象的概念,任何对象,如果它的类有 next 方法和iter 方法返回自己本身,对于 string、list、dict、tuple 等这类容器对象,使用for循环遍历是很方便的。在后台 for 语句对容器对象调用iter()函数,iter()是python的内置函数。iter()会返回一个定义了next()方法的迭代器对象,它在容器中逐个访问容器内元素,next()也是python的内置函数 。在没有后续元素时 ,next()会抛出一StopIteration异常。
生成器(Generator)是创建迭代器的简单而强大的工具。它们写起来就像是正规的函数,只是在需要返回数据的时候使用 yield 语句。
每次next()被调用时,生成器会返回它脱离的位置(它记忆语句最后一次执行的位置和所有的数据值)区别:生成器能做到迭代器能做的所有事,而且因为自动创建了iter()和next()方法,生成器显得特别简洁,而且生成器也是高效的,使用生成器表达式取代列表解析可以同时节省内存。除了创建和保存程序状态的自动方法,当发生器终结时,还会自动抛出 StopIteration 异常。
术语的解释:
1、迭代器协议:对象需要提供next()方法,它要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代。
2、可迭代对象:实现了迭代器协议对象。list、tuple、dict都是Iterable(可迭代对象),但不是Iterator(迭代器对象)。但可以使用内建函数iter() ,把这些都变成Iterable可迭代器对象。
3、for item in Iterable 循环的本质就是先通过iter()函数获取可迭代对象Iterable的迭代器,然后对获取到的迭代器不断调用next()方法来获取下一个值并将其赋值给item,当遇到StopIteration的异常后循环结束
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
学python需要考证吗?考证有什么好处?
对于学习Python的人来说,常常具有这样的疑问:学python需要考证吗?考证有什么好处?
22765
2019-07-11 16:27:46
Python入门基础练习题整理附答案
在初学者Python入门的时候,一方面要多注重积累理论基础知识,另一方面就是要多练手。因此本文整理了Python入门的基础练习题,相信对初学者会有很大的帮助。
13165
2019-08-14 18:15:39
Docker入门到精通教程资源哪里有?
学Docker技术需要具有一定计算机理论基础的开发人员,没有基础的学员不建议先学习Docker,博学谷的ocker核心技术原理以及应用课程对Docker的核心技术以及原理剖析;传授学习方法和学习技巧,让开发人员掌握有效的学习方式。
4918
2019-11-08 17:32:23
5种好用的Python工具分享
Python开发软件可根据其用途不同分为两种,Python代码编辑器和Python集成开发工具,两者配合使用极大的提高Python开发人员的编程效率。掌握调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制等操作。
5659
2020-04-07 16:46:14
2021年Python程序员薪资待遇如何?
目前Python开发工程师的平均薪资逼近20k,各大企业很重视会Python人才。随着AI时代和大数据的到来,Python语言应用越来越广泛。
4253
2021-01-11 13:55:57