python中的生成器
Posted mengxiaoleng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中的生成器相关的知识,希望对你有一定的参考价值。
生成器
列表推导: L = [x * x for x in range(10)] 可创建一个列表
- 内存限制,列表容量有限
- 例如,创建包含100万个元素的列表L= [x * x for x in range(1e6)],不仅占用很大存储空间,如果仅访问前面几个元素,大多数元素占用的空间被浪费
- 列表元素按照某种算法推算出来,在循环的过程中
不断推算出后续元素? - 生成器(generator):延迟计算,不立刻产生结果
生成器创建
g=(x*x for x in range(10))
生成器调用
生成器保存的是算法,访问生成器中的元素:
每次调用next( ),计算下一个元素
访问生成器
使用for...in进行迭代
g=(x*x for x in range(10))
for item in g:
print(item)
生成器函数
其多次返回值,其实就是一个返回生成器的函数
def fib(max):
n,a,b=0,0,1
while n<max:
yield b
a,b=b,a+b
n=n+1
print('done')
g=fib(5)
next(g)
next(g)
next(g)
next(g)
next(g)
g=fib(10)
for item in g:
print(item)
g=fib(20)
while True:
try:
x=next(g)
print('g: ',x)
except StopIteration as e:
print('Generation return value: ',e.value)
break
以上是关于python中的生成器的主要内容,如果未能解决你的问题,请参考以下文章