【Python】Python迭代器和生成器

Python中迭代器(Iterator)和生成器(Generator)都是实现了迭代算法的工具,主要区别是:

  1. 迭代器
  • 实现了iter()和next()方法的对象
  • next()方法返回下一个可用的元素
  • 用StopIteration异常表示迭代结束
## python www.itzhimei.com 代码
class MyIterator:

  def __iter__(self):
    return self

  def __next__(self):
    # 返回下一个元素
  1. 生成器
  • 使用yield关键字定义的函数
  • 在每次调用next()时遇到yield会暂停和生成值
  • 函数定义体中可以有多个yield语句
## python www.itzhimei.com 代码
def my_gen():
  yield 1
  yield 2
  yield 3
  • 生成器也是一种迭代器

两者区别:

  • 迭代器可实现复杂的迭代逻辑,生成器简单易用
  • 迭代器可重用,生成器用完就结束
  • 生成器计算下一个值时更省内存

它们通常配合for循环使用,用来遍历自定义的对象。