生成器(Generators)是Python中一种强大的工具,用于创建可迭代对象。与列表一次性存储所有元素不同,生成器是一种惰性计算机制,它在需要时生成值,并且只有在需要时才会保留之前生成的值,从而节省内存。
生成器可以使用两种方式创建:生成器函数和生成器表达式。
1.生成器函数:
生成器函数是使用关键字 yield
定义的函数。当调用生成器函数时,它返回一个生成器对象,该对象可以在迭代过程中产生一系列值。每次调用 yield
语句时,生成器会暂停并返回一个值,然后继续执行。生成器函数可以在需要时无限地生成值,而不会一次性占用大量内存。
def my_generator():
yield 1
yield 2
yield 3
gen = my_generator()
print(next(gen)) # 输出 1
print(next(gen)) # 输出 2
print(next(gen)) # 输出 3
2.生成器表达式:
生成器表达式类似于列表推导式,但是使用圆括号而不是方括号,并且生成器表达式返回一个生成器对象,而不是列表。它们具有类似的语法和功能,但是生成器表达式是惰性地计算值。
gen = (x for x in range(1, 4))
print(next(gen)) # 输出 1
print(next(gen)) # 输出 2
print(next(gen)) # 输出 3
无论是使用生成器函数还是生成器表达式,生成器都是迭代器,因此可以使用 next()
函数逐个获取生成的值。生成器的惰性计算使其非常适合处理大型数据集或需要逐个处理值的情况。