迭代器
*迭代器:它是一个带状态的对象,他能在你调用next()方法的时候返回容器中的下一个值,任何实现了iter和next()方法的对象都是迭代器,iter返回迭代器自身,next返回容器中的下一个值。下面是斐波那契数列用迭代器实现的例子
class Fibs:
def __init__(self,n):
self.a=0
self.b=1
self.n=n
def __iter__(self):
return self
def __next__(self):
self.a,self.b = self.b,self.a+self.b
if self.a > self.n:
raise StopIteration
return self.a
P = Fibs(10)
for each in P:
print(each)
生成器
生成器:生成器其实是一种特殊的迭代器,不过这种迭代器更加优雅。它不需要再像上面的类一样写iter()和next()方法了,只需要一个yiled关键字。下面是斐波那契数列用生成器实现的例子
def libs():
a = 0
b = 1
while(1):
a,b=b,a+b
yield a
for each in libs():
if each < 100:
print(each, end=' ')
else:
break