• python 迭代器/生成器


    起因

    迭代器生成器一直很迷,简单的记录一下区别

    迭代器

    • 什么是迭代?
      我理解的迭代,就是使用for循环遍历一个(字符串,列表···)把里面的值一个一个的遍历出来
      这个遍历的过程就可以称之为迭代

    • 什么是迭代器?
      提供迭代方法的容器
      常用迭代器: 序列(列表、元组、字符串)、字典

    • 内置函数

      • iter()
        容器.iter() #返回容器的迭代器
      • next()
        容器.next() #迭代器就会返回下一个值
        error: 迭代器没有值可以返回了,Python会抛出一个StopIteration的异常
    list1 = [1,2,3,4]
    aa = iter(list1)  #把生成器赋值给aa
    next(aa)   # 第一次执行 返回结果 1
    next(aa)   # 第二次执行 返回结果 2
    next(aa)   # 第三次执行 返回结果 3
    next(aa)   # 第四次执行 返回结果 4
    next(aa)   # 第五次执行 返回报错 StopIteration
    

    生成器

    什么是生成器?

    在 Python 中,这种一边循环一边计算的机制,称为生成器:generator。
    生成器的好处是延迟计算,一次返回一个结果。也就是说,它不会一次生成所有的结果,这对于大数据量处理,将会非常有用。

    为什么需要生成器?

    因为当列表过大(有几百万个以上的元素) 会非常占用内存,所以这时候就生成器应运而生。
    作用:生成器的列表元素可以按照某种算法推算出来,可以在循环的过程中不断推算出后续的元素

    生成器的两种表达方式

    • 生成器表达式

    • 生成器函数
      生成器使用yield语句返回一个值,
      而常规函数使用return语句返回一个值

  • 相关阅读:
    内存溢出
    3.设计模式----TemplateMethod模式
    tomcat 编码问题
    ibatis实现Iterate的使用 (转)
    2.设计模式---Adapter模式
    1.设计模式-------Iterator
    PHP 下载远程图片
    mysql调优 参数说明
    mySQL内存及虚拟内存优化设置
    Firebug入门指南
  • 原文地址:https://www.cnblogs.com/unixcs/p/13288492.html
Copyright © 2020-2023  润新知