zoukankan      html  css  js  c++  java
  • 【代码学习】PYTHON 生成器

    一、生成器

    一遍循环一遍计算的机制,称为生成器

    二、生成器的特点:

    1、节约内存

    2、迭代到下一次的调用时,所使用的参数都是第一次所保留下的,即是说,在整个所有函数调用的参数都是第一次所调用时保留的,而不是新创建的

    三、创建方法

    1、把列表生成式的[]改为()

    #列表
    L = [x*2 for x in range(5)]
    print L
    #生成器
    G = (x*2 for x in range(5))
    print G

    以上代码运行结果

    [0, 2, 4, 6, 8]
    <generator object <genexpr> at 0x0000000002E40AF8>

    2、yield 生成

    yield 自动终止返回结果。

    循环从终止的地方向下进行

    def  creatNum():
        print ("----start----")
        i = 0
        while i < 5:
            temp = yield i
            print(temp)
            i+= 1
    #创建一个生成器对象
    a = creatNum()
    #让对象开始执行,第一次从头开始执行,如果之前执行过,就从上一次停止的地方开始执行
    next(a)

    以上代码运行结果

    ----start----
    >>> next(a)
    None
    1
    >>> next(a)
    None
    2
    >>> a.send("SQYY")
    SQYY
    3
    >>> next(a)
    None
    4
    >>> 

    四、补充:

    send()

    执行到yield时,gen函数作用暂时保存send发送过来的值

    c.next()等价c.send(None)

  • 相关阅读:
    Redhat 7使用CentOS 7的Yum网络源
    指定YUM安装包的体系结构或版本
    CURL常用命令
    VIM技巧之去除代码行号并缩进代码
    VIM 中鼠标选择不选中行号
    linux服务器性能优化
    阻塞,非阻塞,同步,异步
    WEB三层架构与MVC
    mvc与三层结构
    Centos环境下Tomcat启动缓慢
  • 原文地址:https://www.cnblogs.com/sqyysec/p/7207888.html
Copyright © 2011-2022 走看看