python迭代器
基本概念
迭代:指重复执行某一件事很多次,就像使用循环一样。
容器:用来存储元素的一种数据结果,如list,set,dict,tuple,str
规则
优势:在需要使用一个值时,才去计算获取一个值,而不是通过列表一次性获得,(值过多占用太多内存),而且显得更优雅、简单通过。
可迭代对象:大部分容器以及文件对象,管道对象等。
一个实现了iter()方法的对象可迭代;
一个实现了next()方法的对象是迭代器,调用iter方法返回一个迭代器;
@iterable and iterator
x=[1,2,3]
y=iter(x)
z=iter(x)
其中,x是可迭代对象,而y和z是迭代器。
推荐:使用迭代器实现它自己的__iter__()方法,这样可以直接在for循环中使用迭代器本身。
@ex
class Fib():#斐波那契数列
def __init__(self):
self.a=0
self.b=1
def next(self):
self.a,self.b=self.b,self.a+self.b
return self.a
def __iter__():
return self #返回迭代器
迭代器本质:一个产生值的工厂,每次向迭代器请求下一个值,迭代器就会计算出相应的值并返回