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)方法即可得到迭代的列表。
生成器
推荐阅读
-
Python中 迭代( iteration )、迭代对象( iterable )、迭代器( iterator)、生成器(generator) 的关系详细讲解
-
python生成器generator和迭代器Iterator测试
-
python 生成器generator和迭代器Iterator
-
Python的迭代器(iterator)和生成器(generator)
-
Python学习:生成器(generator)和迭代器(iterator)
-
Python 迭代器(iterator)和生成器(generator)
-
Python中的生成器(generator)和迭代器(Iterator)
-
ES的迭代器Iterator和生成器Generator
-
Python的iterator和generator(迭代器与生成器)相关概念简述
-
详解Python中的生成器和迭代器(generator和iterator)