迭代器和生成器是 Python 中非常强大的概念,它们允许我们以更高效和灵活的方式处理数据流。本文将详细介绍迭代器和生成器的概念、使用方法以及它们之间的区别。

什么是迭代器?

迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

迭代器特点:

  • 迭代器对象必须实现 __iter__()__next__() 两个方法。
  • 迭代器只能向前遍历,不能后退。
  • 迭代器可以重复使用。

什么是生成器?

生成器是一个特殊的迭代器,它在需要时才计算下一个值,而不是一次性计算出所有的值。

生成器特点:

  • 生成器是一个函数,它看起来像一个常规的函数,但使用 yield 语句代替 return 语句。
  • 生成器可以暂停执行,并在下一次调用时从暂停的地方继续执行。
  • 生成器可以返回多个值。

迭代器和生成器的区别

  • 迭代器是一个对象,而生成器是一个函数。
  • 迭代器可以访问集合中的所有元素,而生成器只能返回一个值。
  • 迭代器可以多次使用,而生成器只能使用一次。

代码示例

以下是一个使用生成器的例子:

def generate_numbers(n):
    for i in range(n):
        yield i

for number in generate_numbers(5):
    print(number)

输出:

0
1
2
3
4

扩展阅读

想要了解更多关于 Python 迭代器和生成器的知识,可以阅读以下文章:

Python 迭代器和生成器