zoukankan      html  css  js  c++  java
  • 生成器

    列表生成式


    [i*2 for i in range(10)]
    
    [func(i) for i in range(10)]
    #作用:使代码更简洁

    生成器

    • 通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含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>
    • 不像列表L直接将数据存储在内存,生成器g只是准备好生成方式,调用才生成数据

    • 是使用for循环,因为generator也是可迭代对象:
    >>> g = (x * x for x in range(10))
    >>> for n in g:
    …     print(n)
    • 生成器 只有在调用时才会生成相应的数据
    • 只记录当前位置
    • 只有一个__next__()方法(3.0),2.7中使用next()
  • 相关阅读:
    KVM -> 热迁移_05
    KVM -> 虚拟机磁盘管理_03
    使用光盘搭建本地yum源
    KVM -> 虚拟机管理&console登录_02
    使用windows-SQLyog连接linux-mysql
    linux下登陆mysql失败
    忘记root密码时如何重设密码
    批处理程序:自动登陆服务端,并循环执行某些命令
    linux--磁盘分区
    linux--档案与目录管理
  • 原文地址:https://www.cnblogs.com/limich/p/7476888.html
Copyright © 2011-2022 走看看