python 生成器、列表解析式、yield

一、列表解析式

我们习惯生成列表通过list = [1, 2, 3]的方式来。还有一种很方便的列表生成方式--list = [a*2 for a in range(10)],或者list = [fun(a) for a in range(10)]都是可以的
>>> L1 = [a*2 for a in range(10)]
>>> L1
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

如果只是生成一个100元素,1000元素的列表,那很简单,可是你需要一个100万,一亿个元素的列表时,这样去生成列表,你要知道,它是实实在在的存在你的内存里面,这么大一个列表,过于耗费内存。
那么有没有什么好的解决办法呢?------------>生成器

二、生成器

按照某种算法推算出列表元素,可以一直一边循环一边计算出列表元素的机制,称之为生成器:generator。一个简单生成器构造:列表是L = [a*2 for a in range(10)]   生成器把中括号[]换成小括号()就好了,G = (a*2 for a in range(10)) 这样就得到了一个生成器

猜你喜欢

转载自www.cnblogs.com/shiqi17/p/9348581.html