python 處理 for 迴圈時,首先會呼叫 something.__iter__(),返回 something 對應的迭代器(假設叫 it);而後,for 迴圈會呼叫 it.__next__(),獲取迭代器的下乙個元素,並賦值給 x,然後執行迴圈體;執行完後,for 迴圈會繼續呼叫 it.__next__(),獲取迭代器的下乙個元素,並賦值給 x,執行迴圈體 …… 當 for 迴圈呼叫 it.__next__()產生 stopiteration 異常時,迴圈結束;當程式出現錯誤,python會自動引發異常,也可以通過raise顯示地引發異常。一旦執行了raise語句,raise後面的語句將不能執行。
class foo:
def __init__(self,x):
self.x = x
def __iter__(self):
return self
def __next__(self):
if self.x == 10:
raise stopiteration("程式終止")
self.x += 1
return self.x
f1 = foo(7)
# print(f1.__next__()) #8
# print(f1.__next__()) #9
# print(f1.__next__()) #10
# print(f1.__next__()) #stopiteration: 程式終止
for i in f1:
print(i)
#for迴圈列印結果:
# 8# 9
# 10
class fib:
def __init__(self):
self.a = 1
self.b = 1
def __iter__(self):
return self
def __next__(self):
if self.a > 80:
raise stopiteration("程式終止")
self.a,self.b = self.b,self.a+self.b
return self.a
f1 = fib()
for i in f1: # a>80程式就終止;
print(i)
# 列印結果:
# 1# 2
# 3# 5
# 8# 13
# 21
# 34
# 55
# 89
python迭代器實現斐波那契數列
什麼是迭代器,作用是什麼。迭代器實現斐波那契數列。1.概念 從容器中取資料的工具就是迭代器 游標 2.作用 可以節省大量的記憶體空間 0,1,1,2,3,5,8,13,21,34 初始值 a 0 b 1 游標 當前數值 index 0 斐波那契數列最大數量為 num num根據需求建立乙個類 cla...
迭代器實現斐波那契數列
class fibiterator object 斐波那契數列迭代器 def init self,n param n int,指明生成數列的前n個數 self.n n current用來儲存當前生成到數列中的第幾個數了 self.current 0 num1用來儲存前前乙個數,初始值為數列中的第乙個...
斐波那契數列 斐波那契數列python實現
斐波那契數列 fibonacci sequence 又稱 分割數列 因數學家列昂納多 斐波那契 leonardoda fibonacci 以兔子繁殖為例子而引入,故又稱為 兔子數列 指的是這樣乙個數列 1 1 2 3 5 8 13 21 34 在數學上,斐波納契數列以如下被以遞推的方法定義 f 1 ...