生成器(Generators)在 Python 中是一种特殊的迭代器(Iterator),它们允许你按需生成值,而不是一次性生成所有值。这使得生成器在处理大量数据时特别有用,因为它可以节省内存。
什么是生成器?
生成器是一个返回迭代器的函数,它使用 yield
语句来返回值,而不是 return
。每次调用生成器函数时,它会从上次停止的地方继续执行,直到下一个 yield
语句。
生成器函数
def simple_generator():
yield 1
yield 2
yield 3
gen = simple_generator()
for i in gen:
print(i)
上述代码定义了一个简单的生成器函数 simple_generator
,它将按顺序生成数字 1、2 和 3。
使用生成器
生成器在迭代过程中不会一次性计算所有值,而是按需生成每个值。这意味着生成器可以处理非常大的数据集,而不会占用太多内存。
生成器表达式
生成器表达式与列表推导式类似,但返回一个生成器对象而不是列表。
numbers = (x * x for x in range(10))
for number in numbers:
print(number)
这段代码将生成一个平方数的生成器,而不是一个列表。
生成器与列表的区别
- 内存效率:生成器在任何时候都只处理一个值,而列表需要存储整个列表的所有值。
- 一次性处理:列表可以在创建时一次性生成所有值,而生成器按需生成值。
示例:斐波那契数列生成器
斐波那契数列是一个经典的数学问题,可以用生成器来高效地解决。
def fibonacci_generator(n):
a, b = 0, 1
for _ in range(n):
yield a
a, b = b, a + b
fib = fibonacci_generator(10)
for number in fib:
print(number)
这段代码将生成前 10 个斐波那契数。
扩展阅读
想要了解更多关于 Python 生成器的知识,可以阅读 Python 生成器教程。
[