zoukankan      html  css  js  c++  java
  • day_11 生成器

    1. 生成器本身是迭代器
        1.写迭代器的方式
          1.生成器函数
          2.生成器表达式
          3.各种推导式
        2.生成器函数
          函数内部有yield, yield返回->return
          yield把函数分段进行
          生成器可以使用for循环来获得里面的元素
          def func
              yield
          g=func()
          1.此时g并不是函数执行,而是获得一个生成器
           生成器本身是迭代器,所以再用_next_方法去里面一个一个的取.
           取到yield,当yield取完,没有yield的时候,会跑出StopIteration
           
          2.send()的用法和yield基本一致,就是send还有一个额外的功能,给上一个yield传值
            而且传值会发生在取值之前,send不能给最后一个yield传值,也不能在第一次执行生成器的时候使用
        
        3. 生成器表达式:基本上和推导式表达式一样,就是括号不一样而已
          1.形式g=(结果 for循环 if条件)
          2.特点:
            1.省内存
            2.惰性机制,只能手动一个一个的取
            3.只能向前
        4.各种推导式
          1.列表推导式[结果 for循环 if条件]
          2.字典推导式{key:value for循环 if条件}
          3.集合推导式{key for循环 if条件}
          
        5.生成器表达式和列表推导式的区别
         1.列表推导式一次性加载,比较耗内存,生成器表达式几乎不占内存,只有在使用的时候才分配         使用内存(惰性机制)
         2.结果不一样,列表推导式的结果是列表,生成器表达式的结果是生成器
         
        6.yield from
           把可迭代对象中每一项数据作为生成器结果返回
  • 相关阅读:
    CSS属性选择器
    JS中For循环中嵌套setTimeout()方法的执行顺序
    document.getElementsByTagName()方法的返回值
    常见浏览器及其内核
    git与svn的区别
    JS解析URL参数为对象
    CSS中的伪类和为伪元素
    CSS中:first-child伪类
    CSS链接使用伪类的顺序
    CSS行内框(内联元素)
  • 原文地址:https://www.cnblogs.com/tjp40922/p/9897332.html
Copyright © 2011-2022 走看看