• 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_: 回下一个元素
  • 相关阅读:
    第九篇 正则表达式
    第八篇、递归、装饰器
    第四篇、函数和递归
    第二篇、HTML
    nginx rewrite标签配置以及用户认证配置
    nginx location
    nginx日志配置,以及日志轮询
    nginx别名配置,状态配置,include优化
    第一篇 先用socket模拟web服务器
    第二十八篇、自定义线程池
  • 原文地址:https://www.cnblogs.com/xiaoxiamiaichiyu/p/14583849.html
Copyright © 2020-2023  润新知