python 使用yield

来源:互联网 发布:刘胜军 知乎 编辑:程序博客网 时间:2024/06/06 18:47

使用yield和普通函数return最大的区别就是return在处理全部数据后把最终结果返回到调用者,调用完成之后就无法返回去控制函数,但是yield是把每一个处理结果返回给调用者处理,然后再回到函数处理下一项,知道函数处理完成每一项为止,yield返回的是一个迭代器,对于处理长度很长的列表对内存的效率是很有帮助的,尤其在处理无限级的序列的时候


from itertools import*


a=[{'a':12},{'a':14},{'a':12},{'a':14},{'a':32},{'a':32}]

def geta():
    for i in a:
        yield i
#      
data=geta()

for key,value in groupby(sorted(data,key=lambda i:i.get('a')),lambda a:a.get('a')):
    print key,count(list(value))

原创粉丝点击