Python生成器的2种形式(附带实例)
在 Python 中,生成器是一种特殊的函数,用于按需生成值序列,而不是一次性生成所有值。
生成器使用 yield 关键字产生值,而不是使用 return。当调用生成器时,会返回一个迭代器,该迭代器可以逐个获取生成器生成的值。
生成器有两种形式,分别是生成器函数和生成器表达式。
当调用生成器函数时,会返回一个生成器对象,我们可以通过迭代器接口逐个获取生成的值。
例如:
例如:
另外,生成器还可以用于实现惰性求值。例如,在处理无限序列或大型数据集时,生成器可以节省内存,并计算资源。
生成器使用 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生成器的优点是可以延迟计算和节省内存,因为生成器在需要时才生成值,而不是一次性生成所有值。这在处理大量数据或无限序列时非常有用。
另外,生成器还可以用于实现惰性求值。例如,在处理无限序列或大型数据集时,生成器可以节省内存,并计算资源。