首页 > 编程语言 > 详细

python中的生成器

时间:2019-09-22 15:27:46      阅读:80      评论:0      收藏:0      [点我收藏+]

生成器

列表推导: 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中的生成器

原文:https://www.cnblogs.com/mengxiaoleng/p/11566822.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!