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 3网络爬虫开发实战这本书怎么样?
除了网络图书是成体系的经验分享,python 3网络爬虫开发实战这本书怎么样?这本书记录了崔庆才先生对爬虫实战技术开发最精华的部分,人工智能的浪潮和深度学习技术的突破密不可分,却很少有人会谈论另一位幕后英雄即数据。
6116
2019-06-24 17:35:20
Python工程师常见面试题集锦--网络编程(2)
Python编程语言应用领域极其广泛,目前被广泛应用于人工智能、数据分析、自动化运维、自动化测试、全栈开发领域。对于全栈开发工程师而言,网络编程是非常重要的一个环节。在面试过程中遇到网络编程的问题怎么办?下面小编整理了几个Python网络编程相关的问题与大家分享。
4410
2019-07-03 17:49:56
如何有效提升数据分析效率?五大Python技巧
如何有效提升数据分析效率?相信这是所有数据分析工作者都想解决的问题。本文整理了五大Python技巧,分别是Pandas Profiling;使用 Cufflinks 和 Plotly 绘制 Pandas 数据;IPython 魔术命令;Jupyter 中的格式编排;Jupyter 快捷键。相信这些技巧能很好地帮助大家提高数据分析的效率,下面赶紧来看看吧!
2704
2019-11-10 15:41:09
Python主要用来做什么?
Python可以做web应用开发、网络爬虫、AI人工智能与机器学习、处理数据用来分析、数据科学:包括机器学习、数据分析和数据可视化、脚本等方面开发。
2282
2020-06-30 11:53:32
如何让脚本同时兼容Python2和Python3?
程序开发者常常会遇到的问题是,有⼀个⾮常出名的Python模块被很多开发者使⽤着,但并不是所有⼈都只使⽤Python2或者Python3。这时候你有两个办法。第⼀个办法是开发两个模块,针对Python2⼀个,针对Python3⼀个。还有⼀个办法就是调整你现在的代码使其同时兼容Python2和Python3。本文将介绍⼀些方法,让你的脚本同时兼容Python2和Python3。
1964
2020-07-03 12:20:50
热门文章
- 目前Java架构师现状如何?前景怎么样?
- 大数据行业现在工作很难找吗?
- 和行业大咖1V1免费聊IT,这是头一次!
- 人工智能如何入门学习?前景如何
- 未来互联网人才还稀缺吗?哪些技术方向热门?
- 智能汽车用到哪些技术?
- 产品可行性分析需要考虑几个方面?
- 日常工作中程序员最讨厌哪些工作事项?
- 博学谷狂野大数据学习多长时间?
- IT互联网程序员的涨薪秘籍是什么? 查看更多
扫描二维码,了解更多信息
