可迭代的:物件有__iter__方法的都是可迭代物件
為什麼要用迭代器
1.迭代器提供一件依賴於索引的取值方式 ,這樣就可以遍歷那些1沒有索引的可迭代物件(字典,集合)
2.迭代器與列表比較,迭代器更節省記憶體
缺點:1.無法索引迭代器的長度,使用不如列表索引取值靈活
2. 一次性的,只能住後取值,不能往前
迭代器next 就可以取值
總結yield的功能:
1.相當於把__iter__和__next__方法封裝到函式內部
2.與return比,return只能返回一次,而yield能返回多次
3.函式暫停已經繼續執行的狀態是通過yield儲存的
#e.send與next(e)的區別
#1.如果函式內yield是表示式形式,那麼必須先next(e)
#2.二者的共同之處是都可以讓函式在上次暫停的位置繼續執行,不一樣的地方在於
send在觸發下一次**的執行時,會順便給yield傳乙個值
e=eater('鐵骨')next(e)
e.send('包子')
e.send('豆子')
生成器 迭代器
最近見天一直在看廖大的python教程,卻發現很多基礎看著很簡單,但卻不會應用,歸根結底還是因為理解不到位,故而又將教程學了一遍,並將自己的理解記錄一下,也方便後面查閱。由於沒有相關程式設計基礎,有些理解可能是錯的,敬請批評指正。想深入具體學習廖大部落格請移步廖雪峰的官方 有時候用迴圈生成列表太過繁...
迭代器,生成器
迭代器 生成器 生成器的第1種實現方式 列表生成式改為生成器 python中yield關鍵字 函式中如果有yield,那麼呼叫這個函式的返回值為生成器。當生成器g呼叫next方法,執行函式,知道遇到yield就停止 再執行next,從上一次停止的地方繼續執行 函式中遇return直接退出,不繼續執行...
迭代器 生成器
迭代器 iter 可迭代物件 下乙個元素的值 next 可迭代物件 類中實現 iter 方法 提供迭代器 實現迭代器 import time class mylistiter object 迭代器類 def init self,data self.data data self.index 0 def...