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

    重要的yield :相当于一个断层,我们再用next取拿出每一层
    重要的next :生成器查看装置,查看每一个断层
    重要的send :和next一样查看每一个段层,不过在查看第二个断层的时候,就可以对前面的"一个断层"变量进行添加值
    生成器创建方式之一
    s=(x*2 for x in range(5))
    print(next(s))
    print(next(s))
    print(next(s))
    print(next(s))
    print(next(s))#一次只能拿一个数
    # print(next(s))#most recent call last生成器只能拿出对应元素,如果想多拿就会报错

    取值方法
    for i in s:#生成器是一个可便利对象
    print(i)


    生成器创建方法2
    def aoo():
    print('ok')
    yield 1
    print("abc")
    # print("xiong")
    yield "返回值"
    a=aoo()
    next(a)#使用生成器都要用next
    next(a)#使用生成器都要用next
    for i in a:#使用for i in a 时可以吧返回值一并打出
    print(i)#ok 1 abc 返回值


    什么是可迭代对象:可以使用iter方法的就是可迭代对象
    [1,2,3].__iter__()

    斐波那契数列升级版
    def fib(max):
    n,a,b=0,0,1
    while n <max:
    print(b)
    # a,b=b,a+b#同时进行
    #改版
    now=a#保护原有值
    a=b#赋值
    b=now+b#赋值
    n+=1
    fib(6)


    生成器版斐波那契数列
    def fib(max):
    n,a,b=0,0,1
    while n <max:
    yield a
    a,b=b,a+b#同时进行
    n=n+1
    g=fib(8)
    print(next(g))
    print(next(g))
    print(next(g))
    print(next(g))
    print(next(g))
    print(next(g))

    send使用
    def aoo():
    print("ok")
    count=yield 22
    print(count)
    print('ok2')
    mmd=yield 222
    print(mmd)
    print('ok3')
    yield 22222222
    g=aoo()
    print(g.send(None))
    print(g.send("xiong"))
    print(g.send("i love you"))

  • 相关阅读:
    JSChart_页面图形报表
    hdu 2602(dp)
    hdu 1518(dfs)
    hdu 1716(dfs)
    hdu 1002大数(Java)
    SPOJ 375. Query on a tree (树链剖分)
    poj 1091 跳蚤
    HDU 4048 Zhuge Liang's Stone Sentinel Maze
    HDU Coprime
    HDU Machine scheduling
  • 原文地址:https://www.cnblogs.com/laoli1020/p/8597951.html
Copyright © 2011-2022 走看看