生成器特性阐释

  #生成器函数一定要next之后才是执行

人口普查:
{'name':'北京','population':10}
{'name':'山东','population':10}
{'name':'山西','population':31}
{'name':'河北','population':33}
{'name':'台湾','population':33}




def
get_polulation(): with open('人口普查', 'r', encoding='utf-8') as f: #打开文件 for i in f: yield i g=get_polulation() g.__next__() g.__next__() g.__next__() g.__next__() # print(g.__next__()['population']) #错误 因为g.next得到的是字符串 不能直接索引 需要转化为字典 用eval提取字符串里面的字典 从而索引定位到人口数 # s1=eval(g.__next__()) # print(type(s1)) # print(s1['population']) # res=0 # for p in g: # p_dic=eval(p) # print(p_dic['population']) # res+=p_dic['population'] # print(res) all_pop=sum(eval(i)['population'] for i in g) #总人数 print(all_pop) for p in g: print('%s %%' %eval(p)['population']/all_pop)

 

posted on 2018-05-08 14:04  monster7  阅读(109)  评论(0编辑  收藏  举报

导航