3. 生成器
什么是生成器
- 生成器是能够动态提供数据的可迭代对象。
- 生成器是在程序运行时生成数据,与容器类不同,它通常不会在内存中保存大量的数据,而是现用现生成。
例如:
range() 函数返回的对象就是整数序列生成器。
白话文解释
我在学校门口开了一家服装店,今年有5000个新生入校,为了多买提供校服,我有两种做法:
- 从工厂进货 5000 套校服,放在仓库准备出售。
- 和工厂签约,当有学生来卖校服时,立刻下单,让工厂来制作,制作完成后送到店里交给客户。
而第二种做法就是生成器的原理,现用现生成。
如图
生成器的特点和作用
作用
- 用于按需生成值,而不是一次性生成所有值。
- 适合处理大数据集或无限序列。
特点
- 惰性求值:值在需要时才生成,节省内存。
- 有时不能重复遍历:生成器一般只能遍历一次,再次遍历需要重新创建。
- 具体要看实现方法
python创建生成器的方式有三种:
- 生成器函数。
- 生成器表达式。
- 生成器类。
示例:
# 生成器示例
#
# numbers = list(range(1000000000000000))
#
# for x in numbers:
# print(x)
for x in range(10000000000000000000000000000000):
print(x)
上述程序中,range() 是类,它创建的对象就是生成器对象。当向 生成器对象取值时,才会生成需要的值,否则不会生成。