迭代器型態依據迭代器協定 (iterator protocol) 定義,也就是設計類別實需加入以下兩個方法 (method)
方法 | 描述 |
---|---|
__iter__() | 回傳迭代器物件 (object) 本身 |
__next__() | 取得下一個元素值 |
舉例示範如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | class Fibs: def __init__( self ): self .i = 0 self .j = 1 def __str__( self ): return str ( self .i) def __iter__( self ): return self def __next__( self ): self .i, self .j = self .j, self .i + self .j return self .i fibs = Fibs() for f in fibs: print (f) if f > 10000 : break # 《程式語言教學誌》的範例程式 # 檔名:iterator.py # 功能:示範 Python 程式 # 作者:張凱慶 # 時間:西元 2010 年 12 月 |
執行結果如下

__iter__() 就是回傳 self 本身
9 10 | def __iter__( self ): return self |
__next__() 取得下一個元素,此例中就是前兩個數字相加
12 13 14 | def __next__( self ): self .i, self .j = self .j, self .i + self .j return self .i |
Fibs 提供的是費伯納西數的迭代計算模式,因此可以很快的計算出費伯納西數列。
中英文術語對照 | |
---|---|
迭代器型態 | iterator types |
複合資料型態 | compound data type |
元素 | element |
for 迴圈 | for loop |
迭代器協定 | iterator protocol |
方法 | method |
物件 | object |
沒有留言:
張貼留言