zoukankan      html  css  js  c++  java
  • 10.生成器和迭代器

    01.生成器

    1.1 什么是生成器?(What)

    1、生成器就是一个特殊的迭代器
    2、一个有yield关键字的函数就是一个生成器
      1、生成器是这样一个函数,它记住上一次返回时在函数体中的位置。
      2、对生成器函数的第二次(或第 n 次)调用跳转至该函数中间,而上次调用的所有局部变量都保持不变。
    ef test():
        yield 1
        print('aaaa')
        yield 2
        print('bbb')
    
    r1 = test()
    
    r1.__next__()
    r1.__next__()

    1.2 生成器哪些场景应用?(Where)

    生成器是一个概念,我们平常写代码可能用的并不多,但是python源码大量使用
    
    比如我们tornado框架就是基于 生成器+协程
    
    在我们代码中使用举例
    
    比如我们要生成一百万个数据,如果用生成器非常节省空间,用列表浪费大量空间
    
    
    import time
    t1 = time.time()
    g = (i for i in range(100000000))
    t2 = time.time()
    lst = [i for i in range(100000000)]
    t3 = time.time()
    print('生成器时间:',t2 - t1)  # 生成器时间: 0.0
    print('列表时间:',t3 - t2)    # 列表时间: 5.821957349777222

    1.3 为什么使用生成器

    1、节省空间
    2、高效

    02.迭代器

    #2.1 什么是迭代器(W)
    1、迭代器是访问集合内元素的一种方法
    2、总是从集合内第一个元素访问,直到所有元素都被访问过结束,当调用 __next__而元素返回会引发一个,StopIteration异常
    3、有两个方法:_iter_ _next_
    _iter_ : 返回迭代器自身
    _next_: 回下一个元素
  • 相关阅读:
    Swagger入门
    UOS
    Java多线程
    英语语法小知识-Unit1
    MVVM
    Vue入门
    Mybatis入门
    Python pip install
    js 触发LinkButton点击事件,执行后台方法
    ajax 请求 ascx
  • 原文地址:https://www.cnblogs.com/xiaoxiamiaichiyu/p/14583849.html
Copyright © 2011-2022 走看看