zoukankan      html  css  js  c++  java
  • 生成器、迭代器

    生成器:用来存放一系列数据的可以迭代的容器。生成器减少了内存占用。

    当你在工作时,你需要生成1-10000的数据,而只用到了前100个数,为了减少内存开销,你可以使用生成器

    生成器的标志是yield,一个函数或方法中,有yield关键字时,你可以认定他就是一个生成器。

    生成器通过next方法获取数据,内部执行效果类似于for ... in 。

    生成器定义:
    
    #1: 函数定义
    def gene():
        数据
        yield 数据
    
    def test():
        for i in range(1, 10001):
            yield i
    
    #2:通过列表生成式,将列表生成式的[]改为()
    gene = (i for i in range(1, 10001))    

    取元素时通过next方法获取, 每次返回一个数据,并会记录下此时的位置,下次获取时会从当前位置继续向下获取。

    gene.next()
    # 1
    gene.next()
    # 2
    gene.next()
    # 3

    当next()方法弹出最后一个元素时,再次调用next()方法,会报错。

    迭代器:迭代器的标志是iter()

    关于判断一个函数或者方法是不是迭代器:

      1:看有没有定义iter()方法

      2:判断它是不是Iterator类型

  • 相关阅读:
    ES6(四)字符串的扩展
    ES6(三)数组的扩展
    ES6(二) Destructuring-变量的解构赋值
    ES6(一) let and const
    canvas(七) 文字编写
    canvas(五)createPattern
    canvas(四) Gradient- demo
    canvas(三) star- demo
    jQuery之简单动画效果
    web开发小白之路
  • 原文地址:https://www.cnblogs.com/fansirs/p/13468745.html
Copyright © 2011-2022 走看看