Python中迭代器(Iterator)和生成器(Generator)都是实现了迭代算法的工具,主要区别是:
- 迭代器
- 实现了iter()和next()方法的对象
- next()方法返回下一个可用的元素
- 用StopIteration异常表示迭代结束
## python www.itzhimei.com 代码
class MyIterator:
def __iter__(self):
return self
def __next__(self):
# 返回下一个元素
- 生成器
- 使用yield关键字定义的函数
- 在每次调用next()时遇到yield会暂停和生成值
- 函数定义体中可以有多个yield语句
## python www.itzhimei.com 代码
def my_gen():
yield 1
yield 2
yield 3
- 生成器也是一种迭代器
两者区别:
- 迭代器可实现复杂的迭代逻辑,生成器简单易用
- 迭代器可重用,生成器用完就结束
- 生成器计算下一个值时更省内存
它们通常配合for循环使用,用来遍历自定义的对象。