zoukankan      html  css  js  c++  java
  • 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语句返回一个值

  • 相关阅读:
    隐藏win10中“此电脑”里的6个子文件夹
    k2安装LEDE
    ubuntu下用apt-get安装lamp缺少mcrypt , curl
    Devexpress TreeList选择父级联动
    iPhone10.3.X越狱后SSH连接不上的问题(已解决)
    C#保存Base64格式图片
    PHP服务器文件管理器开发小结(九):jQuery动态表单实现文件下载
    利用Content-disposition实现无刷新下载图片文件
    jQuery多文件下载
    参考资料
  • 原文地址:https://www.cnblogs.com/unixcs/p/13288492.html
Copyright © 2011-2022 走看看