python之路---12 生成器 推導式
阿新 • • 發佈:2018-12-29
三十、函式進階
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).⽣成器的惰性機制: ⽣成器只有在訪問的時候才取值.