生成器是什么
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生成器是什么相关的知识,希望对你有一定的参考价值。
通过列表生成器,我们可以直接创建一个列表,但是由于受到内存限制,列表容量肯定是有限的,而且,创建一个包含100万个元素的列表,不仅占用很大的储存空间,如果我们仅仅需要访问前面几个元素的话,后面元素占用的空间都白白浪费了。
所以,如果列表元素可以按照某种算法推算出来,那么我们是否可以在循环的过程中不断推算出后续的元素?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,叫做生成器:generator,要创建一个generator,有很多种方法,第一种方法很简单,只要把一个列表生成式的[]改为()即可,这样就创建了一个generator,只有在调用的时候,才会形成相应的数据。
列表的生成:
a = [i*2 for i in range(10)]
print(a)
这是列表的生成,print的结果是,0,2,4,6......16,18
生成器:
b = (i*2 for i in range(10))
for i in b:
print(i)
这就是一个生成器。他等价于下面一串代码:
b = []
for i in range(10)
b.append(i*2)
print(b)
注意如果:
b = (i*2 for i in range(10))
print(b)
print(type(b))
我们就会发现,第一个print出来的是b这个生成器的内存地址
而第二个会print出来<class ‘generator‘>
以上是关于生成器是什么的主要内容,如果未能解决你的问题,请参考以下文章