`

Python之生成器

阅读更多
generator:生成器
    generator中保存的是算法,在调用时才计算。
    1、列表生成式转 generator
    L = [x*x for x in range(10)]  ###列表
    g = (x*x for x in range(10))  ###generator
      通过next(g)一个一个打印元素:>>>next(g)  
                                      0
                                   >>>next(g)  
                                      1
                                   >>>next(g)
                                      4
      通过for循环打印(因为generator是可迭代对象):
            for n in g:
               print(n)
      通过list打印:print(list(g))
   
    2、函数实现generator:
     def fib(max):
         n, a, b = 0, 0, 1
         while n < max:
             yield b
             a, b = b, a + b
             n = n + 1
         return 'done'
     print(list(fib(6)))


来看一个网上的面试题:
def add(n,i):
    return n+i
def test():
    for i in range(4):
        yield i
g = test()
for n in [1,10,5]:
    g = (add(n,i) for i in g)

print(list(g))的结果是多少?
正确答案是[15,16,17,18]
个人理解过程如下:
当n为1时,此时g为初始generator test,执行for循环代码重新给g赋值:
g = (add(n,i) for i in test())
当n为10时,此时g为上面的generator,执行for循环代码重新给g赋值:
g = (add(n,i) for i in (add(n,i) for i in test()))
当n为5时,g为上面新的generator,执行for循环重新给g赋值:
g = (add(n,i) for i in (add(n,i) for i in (add(n,i) for i in test())))
当执行print(list(g))时,是要打印g中所有数据,此时g进行实际的计算:当前n为5,test返回的是[0,1,2,3],带入g的公式中
g = (add(5,i) for i in (add(5,i) for i in (add(5,i) for i in (0,1,2,3))))
g = (add(5,i) for i in (add(5,i) for i in (5,6,7,8))
g = (add(5,i) for i in (10,11,12,13))
最后g中数据为(15,16,17,18)
以上为个人理解,如有意见和建议欢迎反馈
分享到:
评论

相关推荐

    Python代码生成器1.0内测版

    您是否在学习Python的路程中感觉路程漫漫?是否曾经半途而废? 是否感觉该学的内容众多? 因为先前编过《信手拈来按键帮你来》所以这里秉承了它的理念。 以Delphi语言开发的,内置百款实例代码,从速借鉴、高效开发...

    python二维码生成器

    python二维码生成器

    python 二维码生成器源码

    Python 二维码生成器是一种能够使用Python编程语言生成二维码图像的软件。它可以通过控制台或者导入模块的方式使用,可以生成各种格式的二维码,包括PNG、JPEG、GIF等格式,还可以生成带有文字、图片、链接等信息的...

    小白必看Python词云生成器详细解析及代码实现

    【小白必看】Python词云生成器详细解析及代码实现, 资源内容是词云图代码文件及相关资源,用于测试代码的实现.【小白必看】Python词云生成器详细解析及代码实现, 资源内容是词云图代码文件及相关资源,用于测试代码的...

    NFT人物头像随机生成器Python源码

    # NFT人物头像随机生成器Python源码 1. 提供眼睛、眉毛、鼻子、脸等多部位图层素材; 2. 随机合成人物头像,可作为NFT艺术品。

    python3 简单密码生成器

    利用Python3的模块,实现简单的密码生成器,通过指定组成密码的字符及密码长度,生成全部组合的密码。

    python参数生成器

    python设备参数生成器

    Python海报生成器源码

    海报编辑器最左侧是组件...快速:三步完成海报开发工作:启动服务 &gt; 编辑海报 &gt; 生成代码 简单:组件丰富、支持拖拽、复制、所见即所得、下载等功能。 动态:无需更改代码,直接在编辑器修改海报即可获得最新的海报。

    汽车VIN码生成 python

    Python版的汽车WIN码生成器 汽车行业可能需要

    Python程序设计:菜单生成器.pptx

    菜单生成器 任务 菜单生成器 任务背景 运用元组相关知识,编写一个程序,要求输入菜品和它的价格,格式化打印该菜单。 本案例主要针对元组的基本使用的考察,元组是不可变序列,创建元组可以通过()创建,也可以通过...

    Python代码生成器内测版1.0.zip

    系统全局Python环境是相当重要的(安装时切忌勾选左下角复选框) 以Delphi语言开发的,内置百款实例代码,从速借鉴、高效开发 1.积木式编程理念,快速拼出您想要的工具,弥补某些软件自身的不足 2.带给不懂编程人员...

    学学Python_50类的成员09 生成器方法和模拟生成器

    模拟生成器,生成器的方法,对应文件:ClassElement9,文章:https://blog.csdn.net/yysyangyangyangshan/article/details/84729103

    Python-SphinxPythonPython文档生成器列表

    Sphinx PythonPython文档生成器列表

    基于Python词云生成器

    基于python实现的的免安装词云生成器——使用python实现文章的词云图的绘制,然后需要具有交互界面,并且能够在没有python环境的电脑下运行,方便不懂编程的人直接使用。

    python —— 简单的验证码生成器

    python —— 简单的验证码生成器

    自制python文件生成器,可生成多种文件

    自制python文件生成器,可生成多种文件

    艺术签名生成器python版

    艺术签名生成器python版

    Python列表生成器的循环技巧分享

    列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。... 您可能感兴趣的文章:Python列表推导式与生成器用法分析Python3中的列表生成式、生成器与迭代器实例详解pyt

    基于Python语言的车牌自动生成器软件设计与实现

    本设计基于Python语言设计并实现了一个自动生成不同场景和不同规格的车牌图片的软件。车牌数据集主要包括两大部分:车牌图片以及对应的信息标注文件。首先,通过图像处理技术生成车牌图片,车牌的字符和外观规格均...

Global site tag (gtag.js) - Google Analytics