Python yield 的理解

来源:互联网 发布:ps4没有备份数据 编辑:程序博客网 时间:2024/05/17 23:00

转载自http://www.cnblogs.com/cotyb/p/5260032.html

当处理大量数据的时候,一个长的数列会浪费很多资源,所以Python的处理办法是通过yield语句,从函数的角度讲和return是一样的道理,但是yield得会上次的执行结果,通过next语句,每next一次 就返回下一次的结果,一直到迭代完成,抛出错误,结束迭代。

#codingdef cube(n):    for i in range(n):        yield i ** 3for i in cube(5):    print i#output0182764
从例子中看出来,cube(5)
>>> # 列表解析生成列表>>> [ x ** 3 for x in range(5)][0, 1, 8, 27, 64]>>> >>> # 生成器表达式>>> (x ** 3 for x in range(5))<generator object <genexpr> at 0x000000000315F678>>>> # 两者之间转换>>> list(x ** 3 for x in range(5))[0, 1, 8, 27, 64]

原创粉丝点击