3分钟掌握Python生成器的基本概念

发表时间: 2023-10-06 06:18

Python 中的生成器是一种特殊的函数,它可以返回一个迭代器对象,该对象可以在循环中动态地生成值,而不是一次性地返回所有的值。

生成器的好处是可以节省内存空间,提高性能,以及实现更优雅的编程风格。

要创建一个生成器,你需要使用 def 关键字定义一个函数,并且至少需要一个 yield 语句。

yield 语句是用来在函数中返回一个生成器对象,并且暂停函数的执行,直到下一次请求值时继续执行。

也可以使用生成器表达式来创建一个生成器对象,它类似于列表推导式,但是使用圆括号而不是方括号。

下面例子演示了如何使用生成器和 yield 语句来创建一个返回奇数的函数:

# 使用 yielddef odd_numbers_yield(n):    # 从 1 开始循环到 n    for i in range(1, n + 1):        # 如果 i 是奇数        if i % 2 == 1:            # yield 在循环内部,逐个返回 i            yield i# 使用生成器表达式odd_numbers_gen = (i for i in range(1, n + 1) if i % 2 == 1)# 测试代码n = 10# 调用 yield 函数result_yield = odd_numbers_yield(n)# 打印结果for x in result_yield:    print(x, end=" ")print()# 调用生成器表达式result_gen = odd_numbers_gen# 打印结果for x in result_gen:    print(x, end=" ")print()

输出:

1 3 5 7 9 1 3 5 7 9