欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python的迭代器(iterator)和生成器(generator)

程序员文章站 2024-02-12 12:57:40
...

前言:
迭代的意思是重复做一些事很多次-就像循环中那样,for循环中对序列和字典进行迭代,但是实际上也能对其他的对象进行迭代:实现__iter__方法的对象。

迭代器

__iter__方法返回一个迭代器。所谓的迭代器就是具有next方法(方法不需要参数)的对象。在调用next方法时,迭代器会返回它的下一个值。如果next方法被调用,迭代器没有值可以返回,就会引发一个StopIteration异常

  • 迭代器的优点:
    为什么不使用列表?如果有一个接一个地计算值得函数,那么在使用时可能是计算一个值时获取一个值-而不是通过列表一次性获取所有的值。如果有很多值,列表就会占用很多的内存,使用迭代器就很优雅。
  • 例子:
    一个实现了__iter__方法的对象是可以迭代的,一个实现了next方法的对象则是迭代器。
class Fibs:
def __init__(self):
	self.a = 0
	self.b = 1
def next(self):
	self.a,self.b = self.b,self.a
	return self.a
def __iter__(self):
	return self
  • 迭代器得到列表
    可以将迭代器转换为列表,使用list(Iterator)方法即可得到迭代的列表。

生成器