之前介绍过列表推导式,列表推导式缺点:
1、创建列表推导式时就给他分配了内存空间,当列表很大时,会占用大量内存空间
2、我们可能只用到列表中前几个元素,后续才能用到其他元素,造成内存白白占用不释放
解决:
1、使用生成器(generator),不用创建完整的list,一边循环一边创建
今天我们就来介绍一下生成器
1 创建生成器–列表推导式
[] 是列表推导式,() 是生成器
# 列表推导式
list1 = [x for x in range(10)]
print(type(list1))
# 生成器
generator1 = (x for x in range(10))
print(type(generator1))
运行结果:
<class 'list'>
<class 'generator'>
2 获取生成器的值–next
# 获取生成器的值:只有在获取值的时候才会分配每个值的内存空间
# 方式1:__next__()
print(generator1.__next__()) # 0
print(generator1.__next__()) # 1
print(generator1.__next__()) # 2
# 方式2:next()
print(next(generator1)) # 3
print(next(generator1)) # 4
print(next</