您现在的位置是:首页 > 文章详情

Python列表推导式与生成器

日期:2018-08-07点击:353

愿你一直充满无限的潜力


列表推导式

>>> [x+1 for x in range(10) ] [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

从上面的代码可以看出,列表推导式是生成一个列表。

生成器

>>> g=(x+1 for x in range(10)) >>> g <generator object <genexpr> at 0x7f3af91b7570> >>> next(g) 1 >>> next(g) 2 >>> next(g) 3 >>> next(g) 4 >>> next(g) 5 >>> next(g) 6 >>> next(g) 7 >>> next(g) 8 >>> next(g) 9 >>> next(g) 10 >>> next(g) Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration >>> 

从上面的代码可以看出,生成器的形式和列表推导式差不多,只是括号的不同。

本质区别是列表推导式是一次性生成,而生成器是通过相应的算法推导出来的值,在数据量较大的时候,你不可能一次性生成那么大的列表,生成器是最好的选择。

例如:用生成器产生斐波拉契数列

def fibs(max): n,a,b=0,0,1 while n < max: yield b a,b = b,a+b n+=1 for n in fibs(6): print(n) 
原文链接:https://yq.aliyun.com/articles/637547
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章