在线客服
扫描二维码
下载博学谷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技术可做web开发、Python技术可做数据分析、Python技术可做人工智能、将Python用于机器学习,流行的Python机器学习库和框架,其中最流行的两个是scikit-learn和TensorFlow。
8329
2019-06-11 15:19:29
Python面试题scrapy和scrapy-redis的区别是什么?
Python面试题scrapy和scrapy-redis的区别是什么?为什么选择redis数据库?scrapy 是一个Python爬虫框架,爬取效率极高,具有高度定制性,但是不支持分布式。选择redis 数据库因为 redis支持主从同步,而且数据都是缓存在内存中的。
8208
2019-07-04 17:55:35
五种方法教你Python字符串连接
字符串是Python中最常用的数据类型,在开发过程中可以对字符创进行截取并与其他字符创进行连接。下面小编整理了5种方法完成Python字符创的连接!
6586
2019-12-10 18:39:16
掌握Python语言能做什么?
Python作为一门当下极其火爆的编程语言,能够得到世界范围内无数的编程爱好者和开发者的喜爱并非偶然。除了相比于其他编程语言更容易入门这样的语言优势之外,Python还有着无比广阔的应用场景。那么,掌握Python语言到底能做什么呢?下面我们就一起来看看Python语言的用途盘点~
4885
2020-05-18 19:55:19
如何修改goods表结构?怎么操作?
如何修改goods表结构?怎么操作?修改表结构可以使用: alter table语句,多个修改字段之间使用逗号分隔,使数据库中表的字段名称标准化便于查找。
2841
2022-01-25 10:21:06