- 使用场景 在使用列表时,数据量特别大时,内存的占用会突然增加,但是使用时又不需要一下子使用全部,通常都是一个一个使用,为了解决这个问题,python中引入了生成器的概念。
- 使用方式
- 方式1:将列表生成式的[]换成()即可
lt = [i for i in range(10)] print(lt) g = (i for i in range(10)) # print(g) # 可以一个一个提取,没有数据继续提取则会报错StopIteration print(next(g)) print(next(g)) # print(next(g)) # 可以遍历 # for i in g: # print(i) # 可以转换为列表 print(list(g))
无论哪种方式操作都是单次的
- 方式2:在函数中使用
yield
关键字
'''
# 当数据量非常大时,会造成内存占用突然增大
def test(n):
lt = []
for i in range(1, n+1):
lt.append(i)
return lt
print(test(3))
'''
def test(n):
for i in range(1, n+1):
# 每次获取一个元素,yield后面的值会返回
# 执行到yield程序又会停止
yield i
# t是一个生成器
t = test(3)
print(t)
# print(next(t))
# for i in t:
# print(i)
print(list(t))
标签: 数码
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~