Python 3.1 快速導覽 - 迭代器型態 (iterator)

所謂的迭代器型態 (iterator types) 是一種複合資料型態 (compound data type) ,其內的元素 (element) 可依序由迭代規則計算出來,因此可用於 for 迴圈 (for loop) 。



迭代器型態依據迭代器協定 (iterator protocol) 定義,也就是設計類別實需加入以下兩個方法 (method)
方法描述
__iter__()回傳迭代器物件 (object) 本身
__next__()取得下一個元素值


舉例示範如下
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

# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:iterator.py
# 功能:示範 Python 程式 
# 作者:張凱慶
# 時間:西元 2010 年 12 月 


執行結果如下



__iter__() 就是回傳 self 本身
def __iter__(self):
    return self


__next__() 取得下一個元素,此例中就是前兩個數字相加
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


內建型態




沒有留言: