重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
創新互聯www.cdcxhl.cn八線動態BGP香港云服務器提供商,新人活動買多久送多久,劃算不套路!
Python中的可迭代對象、迭代器、生成器?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
Python可迭代對象(Iterable)
Python中經常使用for來對某個對象進行遍歷,此時被遍歷的這個對象就是可迭代對象,像常見的list,tuple都是。如果給一個準確的定義的話,就是只要它定義了可以返回一個迭代器的__iter__方法,或者定義了可以支持下標索引的__getitem__方法,那么它就是一個可迭代對象。
Python迭代器(iterator)
迭代器是通過next()來實現的,每調用一次他就會返回下一個元素,當沒有下一個元素的時候返回一個StopIteration異常,所以實際上定義了這個方法的都算是迭代器。可以用通過下面例子來體驗一下迭代器:
生成器(Generators)
生成器是構造迭代器的最簡單有力的工具,與普通函數不同的只有在返回一個值的時候使用yield來替代return,然后yield會自動構建好next()和iter()
因為迭代器如此普遍,python專門為for關鍵字做了迭代器的語法糖。在for循環中,Python將自動調用工廠函數iter()獲得迭代器,自動調用next()獲取元素,還完成了檢查StopIteration異常的工作。
定義迭代器
下面一個例子——斐波那契數列
# -*- coding: cp936 -*- class Fabs(object): def __init__(self,max): self.max = max self.n, self.a, self.b = 0, 0, 1 #特別指出:第0項是0,第1項是第一個1.整個數列從1開始 def __iter__(self): return self def next(self): if self.n < self.max: r = self.b self.a, self.b = self.b, self.a + self.b self.n = self.n + 1 return r raise StopIteration() print Fabs(5) for key in Fabs(5): print key
結果
<__main__.Fabs object at 0x01A63090> 1 1 2 3 5
看完上述內容,你們掌握Python中的可迭代對象、迭代器、生成器的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注創新互聯-成都網站建設公司行業資訊頻道,感謝各位的閱讀!