Python之可迭代对象、迭代器、生成器
发布时间:2025-10-14 17:54:15

Python可迭代对象(Iterable)
for经常用于在Python中遍历一个对象。此时,被遍历的对象是可迭代的对象,如常见的列表和Tuple。如果给出一个准确的定义,只要它定义,它就可以返回到迭代器__iter__方法,或定义可支持下标索引的__getitem__方法,那么它就是一个可迭代的对象。
Python迭代器(iterator)
迭代器是通过next()实现的。每次调用,他都会返回下一个元素。当没有下一个元素时,返回stopiteration异常,因此实际定义这种方法的是迭代器。您可以通过以下示例体验迭代器:
生成器(Generators)
生成器是构造迭代器最简单有力的工具。与普通函数不同的是,返回一个值时只使用yield代替return,然后yield将自动构建next()和iter()
由于迭代器如此普遍,python专门为for关键字制作了迭代器语法糖。在for循环中,python将自动调用工厂函数iter()获取迭代器,自动调用next()获取元素,并完成检查stopiteration异常的工作。
相关推荐:Python视频教程
定义迭代器
下面的例子-斐波那契数列
#-*-coding:cp936-*- classFabs(object): def__init__(self,max): self.max=max self.n,self.a,self.b=0,0,1#特别指出,第0项是0,第1项是第1项。整个数列从1开始 def__iter__(self): returnself defnext(self): ifself.n<self.max: r=self.b self.a,self.b=self.b,self.a+self.b self.n=self.n+1 returnr raiseStopIteration() printFabs(5) forkeyinFabs(5): printkey
结果
<__main__.0x01,Fabsobjectat> 1 1 2 3 5
