为什么要用生成器?
我们可以用列表存储数据,可是当数据特别大是建立一个列表存储数据就会很占用内存。所以,如果列表元素可以通过某种算法推算出来,那我们就可以在数据处理过程中不断的推算出新的后续元素,这样不必创建完整的数据列表可以节省内存空间
创建生成器有3种方法:
1.通过生成表达式
2.通过yield关键字
3.使用内置函数xrange()
1. 通过生成表达式
将列表生成表达式的[]改成(),就可以创建一个生成器
l = [x * x for x in range(2)]
print 'l type is ', type(l)
g = (x * x for x in range(2))
print 'g type is ', type(g)
程序打印结果
l type is <type 'list'>
g type is <type 'generator'>
2. 通过yield关键字
def generator(g):
n = 0
while n < g:
yield n
n += 1
g = generator(2)
print 'g type is ', type(g)
for i in g:
print i
程序打印结果
g type is <type 'generator'>
0
1
3. 通过xrange()函数
g = xrange(2)
print 'g type is ', type(g)
for i in g:
print i
程序打印结果
g type is <type 'generator'>
0
1
总结
Python在数据处理另外被广泛使用,生成器功不可没
网友评论