创建 Python 生成器
在 Python 中制作生成器很容易。它们是一种一个接一个给出值的函数。这使得数据处理变得高效。让建一个:
- 从函数开始:使用 def 创建普通函数。
- Yield,而不是 return:在函数中,使用 yield 而不是 return。每次使用 yield 时,该函数都会发出一个值,然后暂停。
- 调用函数:调用生成器函数会给出一个生成器对象,而不是通常的函数结果。
- 循环生成器:使用循环(如 for 循环)遍历生成器。每次,该函数都会“唤醒”,运行到下一个产量,然后再次暂停。
下面是一个非常简单的 Python 生成器示例:
def countdown(n):
while n > 0:
yield n
n -= 1
# Create the generator
count_gen = countdown(3)
# Iterate over the generator
for number in count_gen:
print(number)
这是输出。
3
2
1
在此示例中,countdown 是一个 Python 生成器函数,它生成从 n 到 1 的数字。当我们调用 countdown(3) 时,它会创建一个生成器对象。然后,我们使用 for 循环遍历此生成器,打印每个数字。这将输出 3、2、1,因为生成器会逐个生成这些值。
生成器与 Python 中的常规函数有何不同
- Yield vs. Return:常规函数发送一个带有 return 的值,然后停止。但是生成器使用产量来给出一个值,然后暂停,保持其状态。当您再次调用它时,它会从停止的位置继续。
- 内存效率:常规函数一次给出所有值,这可能会为大型数据集使用大量内存。生成器一个接一个地产生值。
- 迭 代:迭代在编程中很重要。常规函数为您提供单个值,但生成器允许您随着时间的推移逐个检查值。当您不需要一次处理所有数据时,这很方便。
当您必须处理数据而不将其全部保存在内存中时,Python 的生成器非常有用。