- 迭代器:需要实现
__iter__()
方法返回对象自身,以及__next__()
方法以返回下一个值。通常需要比较多的代码来创建。 - 生成器:使用简单的函数和
yield
关键字来创建,可以很方便地生成一个迭代器。生成器会自动实现__iter__()
和__next__()
方法。 - 迭代器
-
class MyNumbers: def __iter__(self): self.a = 0#初始化变量a为0 return self#返回实例本身 #实现迭代器的核心逻辑,每次调用next都会返回self.a的值,并将self.a的值+1 def __next__(self): x = self.a self.a += 1 return x myclass = MyNumbers() myiter = iter(myclass) print(next(myiter)) print(next(myiter)) print(next(myiter)) print(next(myiter)) print(next(myiter))
生成器
-
#用生成器实现斐波那契数列 def fabonacci(n): a,b,counter=0,1,0 while True: if (counter>n): return yield a a,b=b,a+b counter+=1 f=fabonacci(10) #f是一个生成器对象,可以用for循环来迭代它,或者用next()函数来获取下一个值, #它的值是a,也就是斐波那契数列的第n项 print(type(f)) for i in f: print(i,end=" ")
【无标题】Python 迭代器和生成器
最新推荐文章于 2024-09-27 10:11:28 发布