码迷,mamicode.com
首页 > 编程语言 > 详细

python中生成器及迭代器

时间:2018-05-15 21:07:17      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:算法   关键字   创建生成器   过程   格式   strong   循环   函数定义   int   

列表生成式

  列表生成式是python内部用来创建list的一种方法,其格式形如:

L = [x*8 for x in range(10)]
print(L)

  此时会得到结果:[0, 8, 16, 24, 32, 40, 48, 56, 64, 72]。我们可以看到,用列表生成式,一句代码可以代替用函数循环,比较简洁。

生成器

  通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。

  所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器:generator。

  同样上面的例子,我们只需将[ ]改为( ),此时便创建了一个生成器。

L = (x*8 for x in range(10))
print(L)

  此时输出的结果为:<generator object <genexpr> at 0x00000138C692A7D8>。如果需要将生成器(iterator)的值打印出来,则需要用next()函数.

  另外,除了上述创建生成器的方法外,我们还可以在定义函数时,利用关键字yield。当函数定义中包含yield时,那么这个函数就是一个生成器(iterator)。

 

python中生成器及迭代器

标签:算法   关键字   创建生成器   过程   格式   strong   循环   函数定义   int   

原文地址:https://www.cnblogs.com/skyell/p/9042752.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!