3. 生成器

什么是生成器

例如:

range() 函数返回的对象就是整数序列生成器。

白话文解释

我在学校门口开了一家服装店,今年有5000个新生入校,为了多买提供校服,我有两种做法:

  1. 从工厂进货 5000 套校服,放在仓库准备出售。
  2. 和工厂签约,当有学生来卖校服时,立刻下单,让工厂来制作,制作完成后送到店里交给客户。

而第二种做法就是生成器的原理,现用现生成。

如图

生成器的特点和作用

作用

  1. 用于按需生成值,而不是一次性生成所有值。
  2. 适合处理大数据集或无限序列。

特点

  1. 惰性求值:值在需要时才生成,节省内存。
  2. 有时不能重复遍历:生成器一般只能遍历一次,再次遍历需要重新创建。
    • 具体要看实现方法

python创建生成器的方式有三种:

  1. 生成器函数。
  2. 生成器表达式。
  3. 生成器类。

示例:

# 生成器示例
#
# numbers = list(range(1000000000000000))
#
# for x in numbers:
#     print(x)

for x in range(10000000000000000000000000000000):
    print(x)

上述程序中,range() 是类,它创建的对象就是生成器对象。当向 生成器对象取值时,才会生成需要的值,否则不会生成。