zoukankan      html  css  js  c++  java
  • 生成器

    生成器和迭代器

    • 节省空间
    • 惰性运算:边循环边处理
    • 列表生成使用[],生成器使用()
    g = (i*i if i > 20 else i for i in a)
    
    print(g)
    print(next(g))
    print(g.__next__())
    print('-'*20)
    for i in g:
        print(i)
    • yield 保存了函数的中断状态
    def fib(max):
        n,a,b = 0,0,1
        while n < max:
            yield b
            a,b = b,a+b
            n += 1
        return 'done'
        
    f = fib(10)
    
    print(f)
    print(next(f))
    print(next(f))
    print('-'*20)
    print(next(f))
    print(next(f))
    for i in f:
        print(i)
    • send 将外部参数传到函数的yield中断里

    吃包子游戏

    import time
    def consumer(name):
        print('%s 准备吃包子' % name)
        while 1:
            baozi = yield
            print('包子[%s]来了,被[%s]吃了' %(baozi,name))
    
    
    def producer(name):
        c = consumer('Yaho')
        c2 = consumer('Ali')
        next(c)
        next(c2)
    
        print('开始做包子')
        for i in range(10):
            time.sleep(1)
            print('%s 做了2个包子出来' %name)
            c.send(i)
            c2.send(i)
    
    producer('Steven')
  • 相关阅读:
    SAMBA服务初学练习
    NFS与AutoNFS实例
    NTP服务简介
    DHCP服务简单搭建步骤
    HBase文档操作--练习篇
    Hadoop体系结构管理
    HBase表结构设计--练习篇
    HBase备份恢复练习
    MongoDB管理练习
    24_BlockingQueue接口
  • 原文地址:https://www.cnblogs.com/xp1005/p/6438749.html
Copyright © 2011-2022 走看看