python_218day19-生成器函数(对文本生成迭代操作)

10:15 2019/2/18/周一
day19
//生成器函数import  time
def gen():
    print("lai")
    print("qu")
    print("zou")
    yield "我"

    time.sleep(3)
    yield "想"
    time.sleep(3)
    yield "睡觉"
res=gen()
print(next(res))
print(next(res))
print(next(res))
结果:
lai
qu
zou
我
想
睡觉
//生成器函数每次都是基于上次的状态到下一个状态。就是yield到下一个yield.
def product_baozi():
    for i in range(10):
        yield i
        print("正在生产包子")
        yield i
        print("正在买包子")
res=product_baozi()

print(res.__next__())

print(res.__next__())
print(res.__next__())
//生成器函数里面的yield会自动保存上一次任务的状态。并且每次利用到next的时候执行到一个yiedl.


//生成器总结。
通过open打开文本,然后生成迭代器,最后利用迭代器性质求职。
文档内容:
{"name":"北京","population":15}
{"name":"上海","population":16}
{"name":"徐州","population":17}
{"name":"南京","population":18}

code:
def product_baozi():
    with open("seek","r",encoding="UTF-8") as f:
        for i in f:
          yield i

res=product_baozi()
Sum_popolation=0
for p in res:
    p_dic=eval(p)
    Sum_popolation=p_dic["population"]+Sum_popolation
print(Sum_popolation)
结果:66

方法二:
def product_baozi():
    with open("seek","r",encoding="UTF-8") as f:
        for i in f:
          yield i

res=product_baozi()
Sum_popolation=sum((eval(i)["population"] for i in res))//利用三元函数。
print(Sum_popolation)

猜你喜欢

转载自blog.csdn.net/qq_37431752/article/details/87643635
今日推荐