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

    使用生成器

    def generator():
        print(123)
        yield 1
        print(456)
        yield 2
    g = generator()
    ret = g.__next__()
    print(ret)
    ret = g.__next__()
    print(ret)

    send

    def generator():
        print(123)
        content = yield 1
        print("====",content)
        print(456)
        yield 2
    g = generator()
    ret = g.__next__()
    print(ret)
    ret = g.send("hello")
    print(ret)

    send 获取先一个值的效果和next基本一致,只是在获取下一个值的时候,给上一个值的位置传递一个数控

    注意:第一次使用生成器器的时候,必须要使用next获取下一个值

       最后一个yield不能接受外部的值

    获取移动平均值

    每给一个数取一次平均值

    def average():
        sum = 0
        count = 0
        avg = 0
        while True:
            num = yield avg   #在这里返回
            sum += num
            count += 1
            avg = sum/count
    
    avg_g = average()
    avg_g.__next__()
    avg1 = avg_g.send(10)
    avg1 = avg_g.send(20)
    print(avg1)

    from

    def generator():
        a = "ABCDE"
        b = "12345"
        yield from a
        yield from b
    g = generator()
    for i in g :
        print(i)
    
    执行结果:
    A
    B
    C
    D
    E
    1
    2
    3
    4
    5
  • 相关阅读:
    14:求满足条件的3位数
    1696:逆波兰表达式
    筛法求素数 6分
    1751:分解因数
    1750:全排列
    1788:Pell数列
    666:放苹果
    06:寻宝
    04:最匹配的矩阵
    雷电
  • 原文地址:https://www.cnblogs.com/wanglan/p/9542747.html
Copyright © 2011-2022 走看看