"""迭代器應用
我們發現迭代器最核心的功能就是可以通過next()函式的呼叫來返回下乙個資料值。如果每次返回的資料值不是在乙個已有的資料集合
中讀取的,而是通過程式按照一定的規律計算生成的,那麼也就意味著可以不用再依賴乙個已有的資料集合,也就是說不用再將所有要
迭代的資料都一次性快取下來供後續依次讀取,這樣可以節省大量的儲存(記憶體)空間。
舉個例子,比如,數學中有個著名的斐波拉契數列(fibonacci),數列中第乙個數為0,第二個數為1,其後的每乙個數都可由前
兩個數相加得到:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
現在我們想要通過for...in...迴圈來遍歷迭代斐波那契數列中的前n個數。那麼這個斐波那契數列我們就可以用迭代器來實現,
每次迭代都通過數學計算來生成下乙個數。
"""class fibonacci(object):
def __init__(self, all_num):
self.all_num = all_num
self.current_num = 0
self.a = 0
self.b = 1
# 有iter方法可以迭代
def __iter__(self):
"""如果想要讓乙個物件成為乙個 可迭代物件,即可以使用for,那麼必須使用__iter__方法"""
return self
def __next__(self):
if self.current_num < self.all_num:
ret = self.a
self.a, self.b = self.b, self.a + self.b
self.current_num += 1
return ret
# 迭代結束,如果出現異常則不再迭代 丟擲異常
else:
raise stopiteration
# 建立物件
fibo = fibonacci(10)
# 判斷這個物件是否可以迭代
for num in fibo:
print(num)
python迭代器實現斐波那契數列
什麼是迭代器,作用是什麼。迭代器實現斐波那契數列。1.概念 從容器中取資料的工具就是迭代器 游標 2.作用 可以節省大量的記憶體空間 0,1,1,2,3,5,8,13,21,34 初始值 a 0 b 1 游標 當前數值 index 0 斐波那契數列最大數量為 num num根據需求建立乙個類 cla...
Python迭代器實現斐波那契數列
python 處理 for 迴圈時,首先會呼叫 something.iter 返回 something 對應的迭代器 假設叫 it 而後,for 迴圈會呼叫 it.next 獲取迭代器的下乙個元素,並賦值給 x,然後執行迴圈體 執行完後,for 迴圈會繼續呼叫 it.next 獲取迭代器的下乙個元素...
python自定義迭代器應用 生成斐波那契數列
再類中,定義了 iter self 方法就成為了可迭代物件,再在定義乙個 next self 方法最終成為迭代器 迭代器是在你要用的時候再給你造乙個值,相當於買手抓餅,你說要買的時候人家才給你現場做,節約了記憶體。classa def init self,num self.num num self....