美文网首页
python 中的生成器 (generator)

python 中的生成器 (generator)

作者: 蓝天白云bubble | 来源:发表于2019-05-21 20:40 被阅读0次

简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

       列表是 python 中常用的一种数据结构。但如果列表中的元素非常多,这时如果把这些元素一次性地都放入到列表中会造成内存的严重消耗。
       如果列表中的元素非常多,且有规律可循,这时可以考虑使用生成器的方式存储。生成器并不是直接存储这些元素,而是在迭代过程中推算出下一个元素是什么。

一、以列表生成式的方式创建生成器
       创建生成器的一种简单方式是将列表生成式中的 "[]" 改为 "()" 即可。生成器可以使用 for 循环来遍历其中的各个元素。如下是创建生成器并遍历其中各个元素的示例。

# 创建生成器
gen = (x for x in range(5))

# 遍历生成器中的每个元素
for x in gen:
    print(x)

执行结果:

0
1
2
3
4

二、以函数的方式创建生成器
       如果列表中元素的规律比较复杂,复杂到无法通过列表生成式的方式来创建相应生成器的情况下,还可以通过函数的方式来创建相应的生成器。
       这里以创建斐波那契数列相对应的生成器为例来说明。

def fib(max):
    n, a, b = 0, 0, 1
    while n < max:
        yield b
        a, b = b, a + b
        n = n + 1

gen = fib(6)
for x in gen:
    print(x)

执行结果如下:

1
1
2
3
5
8

       当一个函数中包含了 yield 关键字后,这个函数就不是一个普通的函数了,而是一个生成器。
       为了方便理解以函数的方式创建生成器的代码,可以将生成器看做一个队列,一开始该队列中没有任何元素,在函数执行时,每次遇到 yield 关键字,便会将 yield 关键字后面的值放入队列中。最后该队列中的元素便是生成器对应的元素。

参考

https://www.liaoxuefeng.com/wiki/1016959663602400/1017318207388128

相关文章

  • Python Generator(生成器)

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

  • python输出杨辉三角

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

  • Python yield 的使用

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

  • python 零基础需要学那些?

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

  • Python yield的使用

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

  • python中yield的使用

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

  • 14-核心编程2

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

  • 生成器

    生成器 在python中,使用了yield的函数被称为生成器(generator)。生成器是一个返回迭代器的函数,...

  • python生成器(generator)

    1.生成器(generator)概念 生成器是迭代器,生成器提供了非常方便的自定义迭代器的途径,在Python中,...

  • 生成器 迭代器 装饰器

    生成器在Python中,这种一边循环一边计算的机制,称为生成器:generator。 创建生成器要创建一个生成器,...

网友评论

      本文标题:python 中的生成器 (generator)

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