• 生成器实例


    1 def jidan():
    2     for i in range(10):
    3         yield'鸡蛋%d' %i
    4 #jd:生成器 自动实现迭代器协议
    5 jd = jidan()
    6 print(jd.__next__())
    7 print(jd.__next__())

    包子问题:

    1 def product_bz():
    2     for i in range(10):
    3         print('正在生产包子')
    4         yield '包子%s'%i
    5         print('开始卖包子了')
    6 bz_list = product_bz()
    7 print(bz_list.__next__())
    8 #加代码
    9 print(bz_list.__next__())

    运行结果:

    正在生产包子
    包子0
    开始卖包子了
    正在生产包子
    包子1
    

     

      人口普查:

    {'city':'北京','population':23}
    {'city':'西安','population':13}
    {'city':'上海','population':123}
    {'city':'南京','population':12}
    {'city':'成都','population':12345}
    

      

     1 # #获取某一地区的人口数
     2 def get_population():
     3     with open('人口普查','r',encoding='utf-8') as f:
     4         for i in f:
     5             yield i
     6 print(get_population())
     7 get_p = get_population()
     8 s = (eval(get_p.__next__()))
     9 print(type(s))
    10 print(s['population'])
     
    

    运行结果:

    <generator object get_population at 0x02D86270>
    <class 'dict'>
    23
    
    Process finished with exit code 0
    

      

    # #使用生成器迭代出所有城市的人口数
    def get_population():
        with open('人口普查','r',encoding='utf-8') as f:
            for i in f:
                yield i
    print(get_population())
    get_p = get_population()
    # print(get_p)
    for p in get_p:
        p_dict = eval(p)
        print(p_dict['population'])

    运行结果:

    <generator object get_population at 0x01376270>
    23
    13
    123
    12
    12345
    
    Process finished with exit code 0
    

      

    1 # #计算总人口数
    2 def get_population():
    3     with open('人口普查','r',encoding='utf-8') as f:
    4         for i in f:
    5             yield i
    6 print(get_population())
    7 get_p = get_population()
    8 all_pop = sum(eval(i)['population'] for i in get_p)
    9 print(all_pop)

    运行结果:

    <generator object get_population at 0x03716270>
    12516
    
    Process finished with exit code 0
    

      

     1 #计算平均人口数 失败
     2 def get_population():
     3     with open('人口普查','r',encoding='utf-8') as f:
     4         for i in f:
     5             yield i
     6 print(get_population())#生成器
     7 get_p = get_population()
     8 all_pop = sum(eval(i)['population'] for i in get_p)
     9 print(all_pop)
    10 for p in get_p:
    11     print(eval(p)['population']/all_pop)#使用__next__()之后所有数字被遍历完 计算平均数失败

    运行结果:

    <generator object get_population at 0x02F96270>
    12516#计算失败
    
    Process finished with exit code 0
    

      

    def test():
    
        for i in range(4):
            yield i
    t = test()
    t1 = (i for i in t)
    t2 = (i for i in t1)
    print(list(t1))
    print(list(t2))#在这之前t1已经遍历过 此时已经遍历结束为空 打印出来空列表

    运行结果:

    [0, 1, 2, 3]
    []#之前被遍历过 此时为空
    
    Process finished with exit code 0
  • 相关阅读:
    UVALive 7352 Dance Recital
    [ An Ac a Day ^_^ ] UVALive 7270 Osu! Master
    vim配置文件
    数据结构 链表
    [ An Ac a Day ^_^ ] hrbust 2291 Help C5 分形
    [ An Ac a Day ^_^ ] hdu 2553 N皇后问题 搜索
    [ An Ac a Day ^_^ ] HihoCoder 1249 Xiongnu's Land 线性扫描
    hdu 5874 Friends and Enemies icpc大连站网络赛 1007 数学
    hdu 5876 Sparse Graph icpc大连站网络赛 1009 补图最短路
    6.Z字变换 direction
  • 原文地址:https://www.cnblogs.com/gl-gl/p/9160821.html
Copyright © 2020-2023  润新知