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

python中的生成器和迭代器

时间:2018-10-22 20:34:32      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:作用   生成式   列表   迭代   了解   pytho   gen   div   大量   

前言:

我们来了解一下什么是python中生成器。了解一下python生成器是什么,以及生成器python编程之中能起到什么样的作用

定义:

python生成器是什么?

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

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

创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator:

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

>>> L

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

>>> g = (x * x for x in range(10))

>>> g

<generator object <genexpr> at 0x1022ef630>

 

我们创建了一个generator后,通过for循环来迭代它,并且不需要关心StopIteration的错误。

g = (x * x for x in range(10))
for i in g:
    print(i)

运行结果:

0
1
4
9
16
25
36
49
64
81

 

或者我们可以通过__next__()从生成器中取值

g = (x * x for x in range(10))
print(g.__next__())
print(g.__next__())
print(g.__next__())
print(g.__next__())

运行结果:

0
1
4
9

 

generator非常强大。如果推算的算法比较复杂,用类似列表生成式的for循环无法实现的时候,还可以用函数来实现。

python中的生成器和迭代器

标签:作用   生成式   列表   迭代   了解   pytho   gen   div   大量   

原文地址:https://www.cnblogs.com/chaojiyingxiong/p/9831579.html

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