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

     def generator():
    #     print(123)
    #     content = yield 1
    #     print('=======',content)
    #     print(456)
    #     arg = yield 2
    #     ''''''
    #     yield
    # g1 = generator()
    # g2 = generator()
    # g1.__next__()
    # g2.__next__()
    # print('***',generator().__next__())
    # print('***',generator().__next__())
    
    # g = generator()
    # ret = g.__next__()
    # print('***',ret)
    # ret = g.send('hello')   #send的效果和next一样
    # print('***',ret)

    send 获取下一个值的效果和next基本一致
    #只是在获取下一个值的时候,给上一yield的位置传递一个数据
    #使用send的注意事项
    # 第一次使用生成器的时候 是用next获取下一个值
    # 最后一个yield不能接受外部的值

    生成式实例获取移动平均值

    # 获取移动平均值         计算第一排数据的平均值
    # 10 20 30 10
    # 10 15 20 17.5
    # avg = sum/count
    # def average():
    #     sum = 0
    #     count = 0
    #     avg = 0
    #     while True:
    #         num = yield avg       #先调用avg_g.__next__返回 avg 再此调用avg.send(int)向yield位置传入新的值,同时将此值作为参数参与运算,并返回一个新的运算结果。
    #         sum += num    # 10
    #         count += 1    # 1
    #         avg = sum/count
    #
    # avg_g = average()
    # avg_g.__next__()
    # avg1 = avg_g.send(10)
    # avg1 = avg_g.send(20)
    # print(avg1)

    再此基础上加入一个装饰器,省去了调用avg._g.__next__这一步

  • 相关阅读:
    P2168 [NOI2015]荷马史诗
    P3195 [HNOI2008]玩具装箱TOY
    P1972 [SDOI2009]HH的项链
    P2339 提交作业usaco
    P3974 [TJOI2015]组合数学
    P2831 愤怒的小鸟
    [校内模拟题4]
    P3952 时间复杂度
    P3531 [POI2012]LIT-Letters
    2019.10.1 qbxt模拟题
  • 原文地址:https://www.cnblogs.com/daju/p/10048833.html
Copyright © 2011-2022 走看看