码迷,mamicode.com
首页 > 其他好文 > 详细

生成器函数进阶

时间:2018-08-27 18:20:52      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:yield   效果   rom   外部   __next__   生成   sum   必须   获取   

使用生成器

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

 

生成器函数进阶

标签:yield   效果   rom   外部   __next__   生成   sum   必须   获取   

原文地址:https://www.cnblogs.com/wanglan/p/9542747.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!