zoukankan      html  css  js  c++  java
  • 生成器实例

    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
  • 相关阅读:
    菜鸟攻城狮4(基本语法)
    Spring 3.x 企业引用开发实战(陈雄华/林开雄)
    进击的菜鸟问题1(设置checkbox全选)
    Maven实战
    菜鸟攻城狮3(Holle World)
    菜鸟攻城狮2(JAVA开发环境)
    git基本使用
    跨域问题及解决跨域的方案
    原生ajax相关概念
    php服务器语言,MySQL数据库以及php怎么操作数据库
  • 原文地址:https://www.cnblogs.com/gl-gl/p/9160821.html
Copyright © 2011-2022 走看看