python圆形生成器_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

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

标签:10,python,元素,生成器,列表,item,range

来源: https://www.cnblogs.com/mengxiaoleng/p/11566822.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值