美文网首页
python 生成器:generator

python 生成器:generator

作者: ugvibib | 来源:发表于2017-10-03 02:08 被阅读16次

概念:

通过列表生成式,我们可以直接创建一个列表。
但是,受到内存限制,列表容量肯定是有限的。
而且,创建一个包含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>

输出:

1、通过next(g):
>>> next(g)
0
>>> next(g)
1
>>> next(g)
4
>>> next(g)
9
>>> next(g)
16
>>> next(g)
25
>>> next(g)
36
>>> next(g)
49
>>> next(g)
64
>>> next(g)
81
>>> next(g)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration

2、通过for循环:
>>> g = (x * x for x in range(10))
>>> for n in g:
...     print(n)
... 
0
1
4
9
16
25
36
49
64
81

相关文章

  • Python Generator(生成器)

    什么是Python Generator(生成器)?Python Generator(生成器)用于在内存资源有限的情...

  • python 零基础需要学那些?

    容器 Python容器简介 Python 容器API Python 生成器generator Python迭代器 ...

  • Python yield的使用

    带有 yield 的函数在 Python 中被称之为 generator(生成器),何谓 generator ? ...

  • python中yield的使用

    带有 yield 的函数在 Python 中被称之为 generator(生成器),何谓 generator ? ...

  • python输出杨辉三角

    知识点 1. python中的生成器 generator python生成器 2. python中-1索引表示容器...

  • Python yield 的使用

    Python中,带有 yield 的函数在 Python 中被称之为 generator(生成器),何谓 gene...

  • Python yield关键字与协程

    生成器generator 在讨论协程之前,我们先来看看python的生成器。简单的来讲,在python里面,一边循...

  • Python生成器源码剖析

    生成器是个什么鬼? 生成器(Generator)在python2.3时成为python的标准特性,因此也多加了一个...

  • 生成器、迭代器

    生成器、迭代器 标签(空格分隔): python 生成器generator 本着节约的原则,在使用列表元素时,按照...

  • 14-核心编程2

    生成器 概念在Python中, 一边循环一边计算的机制, 称为生成器: generator 创建生成器: G = ...

网友评论

      本文标题:python 生成器:generator

      本文链接:https://www.haomeiwen.com/subject/tejbsxtx.html