首页 > 编程笔记 > Python笔记 阅读:9

Python生成器的2种形式(附带实例)

Python 中,生成器是一种特殊的函数,用于按需生成值序列,而不是一次性生成所有值。

生成器使用 yield 关键字产生值,而不是使用 return。当调用生成器时,会返回一个迭代器,该迭代器可以逐个获取生成器生成的值。

生成器有两种形式,分别是生成器函数和生成器表达式。

Python生成器函数

生成器函数是一个包含 yield 语句的函数。

当调用生成器函数时,会返回一个生成器对象,我们可以通过迭代器接口逐个获取生成的值。

例如:
def countdown(n):
    while n > 0:
        yield n
        n -= 1

# 使用生成器函数创建生成器对象
gen = countdown(5)
for i in gen:
    print(i)
程序的执行结果为:
5
4
3
2
1

Python生成器表达式

生成器表达式类似于列表推导式,它可以按需生成值,从而节省内存空间,并且具有类似于列表推导式的简洁语法。

例如:
gen = (x * 2 for x in range(5))
for i in gen:
    print(i) 
执行结果为:
0
2
4
6
8
生成器的优点是可以延迟计算和节省内存,因为生成器在需要时才生成值,而不是一次性生成所有值。这在处理大量数据或无限序列时非常有用。

另外,生成器还可以用于实现惰性求值。例如,在处理无限序列或大型数据集时,生成器可以节省内存,并计算资源。

相关文章