zoukankan      html  css  js  c++  java
  • 生成器(generator,yield),next,send

    #生成器
    def generator():
        for i in range(200):
            yield '哇哈哈%s' %i
    g = generator() #调用生成数函数,接受作用
    ret = g.__next__() #每执行一次g.__next__就是从生成器取值
    print(ret)
    ret = g.__next__() #每执行一次g.__next__就是从生成器取值
    print(ret)

    def generator():
        for i in range(200):
            yield '哇哈哈%s' %i
    g = generator() #调用生成数函数,接受作用
    ret = g.__next__() #每执行一次g.__next__就是从生成器取值
    print(ret)
    ret = g.__next__() #每执行一次g.__next__就是从生成器取值
    print(ret)
    num = 0
    for i in g:
        num += 1
        if num > 10:
            break
        print(i)

    生成器的作用:一条一条输出,输出一个获取一个,不像return,输出后就马上返回,不能执行后面的函数。

    !!!send 获取下一个值的效果和next基本一致,但是获取下一个值时,要给上一个yield的位置传递一个数据。

    !!!第一次使用生成器时,是用next获取下一个值,最后一个yield不能接受外部的值

    #next send
    def generator():
        print(123)
        content = yield 1
        print('======',content)
        print(456)
        yield 2 
    g = generator() #调用生成数函数,接受作用
    ret = g.__next__() #每执行一次g.__next__就是从生成器取值
    print('***',ret)
    ret = g.send('hello')  #send的效果和next一样
    print('***',ret)

     最后一个yield如果想使用的话,解决办法如下:

    def generator():
        print(123)
        content = yield 1
        print('======',content)
        print(456)
        arg = yield 2
        ''''''
        yield
  • 相关阅读:
    洛谷P2602 [ZJOI2010]数字计数 题解
    数位DP模板
    The Meaningless Game 思维题
    CF55D Beautiful numbers 数位DP
    NOIP 2016 洛谷 P2827 蚯蚓 题解
    弹性碰撞问题:Ants+Linear world
    BZOJ1294 洛谷P2566 状态压缩DP 围豆豆
    朋友HDU
    树的深度———树形DP
    CF1292C Xenon's Attack on the Gangs 题解
  • 原文地址:https://www.cnblogs.com/qq946487854/p/9867889.html
Copyright © 2011-2022 走看看