1. 程式人生 > >python之路---12 生成器 推導式

python之路---12 生成器 推導式

三十、函式進階

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

      本質就是迭代器   一個一個的建立物件     節省記憶體

    ①建立生成器       最後以yield結束

      1. 通過⽣成器函式

        2. 通過各種推導式來實現⽣成器
      3. 通過資料的轉換也可以獲取⽣成器  

    ②send用法     

    send 和 __next__都是下一個的意思

      但send可以給上一個yield 位置傳值   不能給最後⼀個yield傳送值. 在第⼀次執⾏⽣

      成器程式碼的時候不能使⽤send()

 

 

 

   ③yield from

      把一個yield from迴圈完再迴圈下一個yield from

 

 

      2.推導式  (只有列表,字典,集合 .    沒有元組)

    1). 列表推導式      [ 結果   for迴圈   if 條件]

 

    2).字典推導式        { 結果(k,v)   for迴圈   if 條件} 

 

 

   3).集合推導式        {k  for迴圈   if 條件}

     集合的特點: ⽆序, 不重複. 所以集合推導式⾃帶去重功能

 

 

   3.生成器函式 

      1).生成器表示式    (i  for i  in  range(10))

 

     2).可以使⽤for迴圈來迴圈這個⽣成器:

 

     3).⽣成器表示式也可以進⾏篩選

 

 

    4).⽣成器的惰性機制: ⽣成器只有在訪問的時候才取值.