生成器函数进阶

Posted wanglan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生成器函数进阶相关的知识,希望对你有一定的参考价值。

使用生成器

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

 

以上是关于生成器函数进阶的主要内容,如果未能解决你的问题,请参考以下文章

我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段

我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段

函数进阶--生成器与迭代器

python_函数进阶3

Atom编辑器入门到精通 Atom使用进阶

生成器函数进阶