介绍
小编给大家分享一下python迭代器和生成器区别有哪些,希望大家阅读完这篇文章后大所收获、下面让我们一起去探讨吧!
<强>迭代器强>是一个更抽象的概念,任何对象,如果它的类有一方法和iter方法返回自己本身,对于字符串,列表,dict,元组等这类容器对象,使用的循环遍历是很方便的。
在后台为语句对容器对象调用iter()函数,iter()是python的内置函数,()会返回一个定义了next()方法的迭代器对象,它在容器中逐个访问容器内元素,next()也是python的内置函数。在没有后续元素时,下一个()会抛出一个抛出StopIteration异常。
#随便定义一个列表 listArray=(1、2、3) #使用iter()函数 iterName=iter (listArray) 打印(iterName)
<强>生成器强>(发电机)是创建迭代器的简单而强大的工具。它们写起来就像是正规的函数,只是在需要返回数据的时候使用收益率语句。每次next()被调用时,生成器会返回它脱离的位置(它记忆语句最后一次执行的位置和所有的数据值)
#菲波那切数列 def Fib (max): n, a, b=0, 0, 1 尽管n & lt;马克斯: 收益率b a, b=b, a + b n=n + 1 返回& # 39;亲!没有数据了…& # 39; #调用方法,生成出10个数来 f=Fib (10) #使用一个循环捕获最后返回返回的值,保存在异常抛出StopIteration的价值中 而真正的: 试一试: x=下一个(f) 打印(“f:“, x) 除了抛出StopIteration e: print(“生成器最后的返回值是:“,e.value) 打破
<>强区别:强>
生成器能做到迭代器能做的所有的事,而且因为自动创建了iter()和next()方法,生成器显得特别简洁,而且生成器也是高效的,使用生成器表达式取代列表解析可以同时节省内存。除了创建和保存程序状态的自动方法,当发生器终结时,还会自动抛出抛出StopIteration异常。
看完了这篇文章,相信你对python迭代器和生成器区别有哪些有了一定的了解,想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!