一.生成器   

  函数中有yield 的就是生成器函数(替代了return)

      本质就是迭代器   一个一个的创建对象     节省内存

  1.创建生成器   

     最后以yield结束

      1. 通过⽣成器函数

        2. 通过各种推导式来实现⽣成器
      3. 通过数据的转换也可以获取⽣成器  python ---12        生成器      推导式_创建对象

 

  2.send用法     

    send 和 __next__都是下一个的意思

      但send可以给上一个yield 位置传值   不能给最后⼀个yield发送值. 在第⼀次执⾏⽣

      成器代码的时候不能使⽤send()

python ---12        生成器      推导式_生成器_02

 

 

   3.yield from

      把一个yield from循环完再循环下一个yield from

python ---12        生成器      推导式_数据_03

 

 

二.推导式

  (只有列表,字典,集合 .    没有元组)

    1. 列表推导式      [ 结果   for循环   if 条件]

python ---12        生成器      推导式_for循环_04

 

  2.字典推导式

    { 结果(k,v)   for循环   if 条件} 

 python ---12        生成器      推导式_for循环_05

 

  3.集合推导式

    {k  for循环   if 条件}

     集合的特点: ⽆序, 不重复. 所以集合推导式⾃带去重功能

 python ---12        生成器      推导式_for循环_06

 

三.生成器函数

     1.生成器表达式   

  (i  for i  in  range(10))

python ---12        生成器      推导式_创建对象_07

 

  2.可以使用for循环来循环这个生成器

 

python ---12        生成器      推导式_for循环_08

 

  3.生成器表达式也可以进行筛选

 

 python ---12        生成器      推导式_创建对象_09

 

  4.⽣成器的惰性机制:

  ⽣成器只有在访问的时候才取值. 

python ---12        生成器      推导式_数据_10