生成器是什么

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‘>

以上是关于生成器是什么的主要内容,如果未能解决你的问题,请参考以下文章

python-20-生成器又是什么东西?

什么是合成器

什么是好的游戏随机数生成器?

生成器是什么

什么是 XCode 界面生成器“文档”部分

什么是生成器?