Python學習之迭代器和生成器
阿新 • • 發佈:2018-11-05
那麼首先什麼是迭代器和生成器呢?
迭代器即迭代的工具,那麼什麼又是迭代呢?所謂迭代:迭代是一個重複的過程,每次重讀即一次迭代,並且每次迭代的結果都是下一次迭代的初始值。例:
l=[1,2,3] count=0 while count < len(l): print(l[count]) count+=1
重點:
一、可迭代物件
可迭代物件值得是內建有__iter__方法的物件,例:
'hello'.__iter__ (1,2,3).__iter__ [1,2,3].__iter__
二、迭代器物件
可迭代物件執行__iter__()的到結果就是迭代器物件,迭代器物件既內建__iter__又__next__方法的物件。迭代器的使用,例:
dic={'a':1,'b':2,'c':3} iter_dic=dic.__iter__() print(iter_dic.__next__()) #等同於next(iter_dic) print(iter_dic.__next__()) #等同於next(iter_dic) print(iter_dic.__next__()) #等同於next(iter_dic) print(iter_dic.__next__()) #丟擲異常StopIteration,或者說結束標誌
三、生成器
所謂生成器:在 Python 中,使用了 yield 的函式被稱為生成器(generator)。跟普通函式不同的是,生成器是一個返回迭代器的函式,只能用於迭代操作,更簡單點理解生成器就是一個迭代器。在呼叫生成器執行的過程中,每次遇到 yield 時函式會暫停並儲存當前所有的執行資訊,返回 yield 的值, 並在下一次執行 next() 方法時從當前位置繼續執行。呼叫一個生成器函式,返回的是一個迭代器物件。例:
def func(): print('====>first') yield 1 print('====>second') yield 2 print('====>third') yield 3 print('====>end') g=func() print(g)