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"))

  • 相关阅读:
    后缀数组
    网络流 HOJ1087
    备用
    css-具有缩略图的材料列表
    正则匹配log行
    vue-cli的webpack打包,icon无法正确加载
    导出CSV,导出excel数字过长显示科学计数法解决方案
    js导出CSV
    git常见操作指令
    javascript原型的意义
  • 原文地址:https://www.cnblogs.com/laoli1020/p/8597951.html
Copyright © 2011-2022 走看看