当前位置: 首页 > 后端技术 > Python

图形蟒蛇-迭代器和生成器

时间:2023-03-26 17:08:30 Python

作者:韩信子@ShowMeAI教程地址:http://www.showmeai.tech/tuto...本文地址:http://www.showmeai.tech/article-detail/82免责声明:版权所有,转载请联系平台和作者并注明出处1.Python迭代器迭代是Python最强大的功能之一,是一种访问集合元素的方式。迭代器是一个记住遍历位置的对象。迭代器对象从集合的第一个元素开始访问,直到访问完所有元素。迭代器只能前进不能后退。迭代器有两个基本方法:iter()和next()。字符串、列表或元组对象可用于创建迭代器:list=[1,2,3,4]it=iter(list)#创建迭代器对象print(next(it))#输出迭代器的下一个元素1print(next(it))#输出迭代器的下一个元素2迭代器对象可以使用正则for语句遍历(在线python3环境):l=['Baidu','ShowMeAI','google','ByteDance']it=iter(l)#在里面为x创建一个迭代器对象:print(x)执行上面的程序,输出结果如下:BaiduShowMeAIgoogleByteDance也可以使用next()函数(在线python3环境):list=['Baidu','ShowMeAI','google','ByteDance']it=iter(list)#创建一个迭代器对象whileTrue:try:print(next(it))exceptStopIteration:break执行上面的程序,然后输出如下:BaiduShowMeAIgoogleByteDance(1)创建迭代器要将类作为迭代器使用,需要在类中实现__iter__()和__next__()两个方法。如果你对面向对象编程有所了解,就会知道一个类有一个构造函数,而Python的构造函数是__init__(),它会在对象初始化时执行。阅读更多:Python面向对象的__iter__()方法返回一个特殊的迭代器对象,该对象实现了__next__()方法,并通过StopIteration异常标记迭代完成。__next__()方法(Python2中的next())返回下一个迭代器对象。创建一个返回数字的迭代器,初始值为1,递增1(在线python3环境):classIterNumbers:def__iter__(self):self.a=1returnselfdef__next__(self):x=self.aself.a+=1returnxnum_class=IterNumbers()iter_num=iter(num_class)print(next(iter_num))print(next(iter_num))print(next(iter_num))print(next(iter_num))print(next)(iter_num))执行输出结果为:12345(2)StopIterationStopIteration异常用于标志迭代完成,防止死循环。在__next__()方法中,我们可以设置StopIteration异常,在完成指定的循环次数后结束迭代。迭代10次后停止执行(在线python3环境):classIterNumbers:def__iter__(self):self.a=1returnselfdef__next__(self):ifself.a<=10:x=self.aself.a+=1returnxelse:raiseStopIterationnum_class=IterNumbers()iter_num=iter(num_class)forxiniter_num:print(x)执行输出为:123456789102。在Python中调用使用yield的函数为生成器(发电机)。与普通函数不同,生成器是返回迭代器的函数,只能用于迭代操作。在调用生成器运行的过程中,每次遇到yield,函数都会暂停并保存当前所有运行信息,返回yield的值,下次执行next()方法时从当前位置继续运行.调用生成器函数返回一个迭代器对象。以下示例使用yield实现斐波那契数列(在线python3环境):deffibonacci(n):#generatorfunction-Fibonaccia,b,counter=0,1,0whileTrue:if(counter>n):returnyieldaa,b=b,a+bcounter+=1f=fibonacci(10)#f是一个迭代器,由生成器返回whileTrue:try:print(next(f))exceptStopIteration:break执行上面的程序,输出结果如下:0112358132134553也可以点此查看B站视频教程版本【中英文字幕】https://www.bilibili.com/video...下载资料和代码本系列教程的代码可以在ShowMeAI对应的github上下载,可以在本地python环境下运行。会科学上网的宝宝们也可以直接使用googlecolab一键互动运行学习!本系列教程涉及的Python备忘单可在以下地址下载:Python备忘单扩展参考资料Python教程-Python3文档Python教程-廖雪峰官网ShowMeAI相关文章推荐python基本数据类型python运算符python条件控制和if语句python循环语句pythonwhile循环pythonfor循环pythonbreak语句pythoncontinue语句pythonpass语句python字符串和操作pythonlistpythontuplepython字典pythonsetpython函数python迭代器和生成器Python数据结构Python模块Python文件读写Python文件和目录操作Python错误和异常处理Python面向对象编程PythonNamespaceandScopePythonTimeandDateShowMeAI系列教程推荐图Python编程:从入门到精通系列教程图解数据分析:从入门到精通AI数学基础系列教程:从入门到精通系列教程大数据技术系列教程:从入门到精通系列教程