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类型

  • 相关阅读:
    数据转换类型和算数运算符
    语言基础+数据类型
    JS(一)Prototype的使用
    Jquery EasyUI简介和数据的增删改查
    http简介
    《JavaScript语言精粹》笔记
    wcf
    简单工厂模式与抽象工厂模式
    <转载>C#中的特性(Attributes)
    <转载>C#IEnumerable和IEnumerator 详解
  • 原文地址:https://www.cnblogs.com/fansirs/p/13468745.html
Copyright © 2011-2022 走看看