Python迭代器

一、迭代器

正式的說法是,一個實現了__iter__方法的對象是可迭代的,一個實現了next方法的對象則是迭代器。

__iter__方法會返回一個迭代器,所謂的迭代器就是具有next方法(這個方法在調用時不用任何參數)的對象。在調用next方法時候,迭代器會返回它的下一個值。看一個不適用列表的例子,

class Fibs:
    def __init__(self):
        self.a=0
        self.b=1
    def next(self):
        self.a, self.b = self.b, self.a+self.b
    def __iter__(self):
        return self

首先,產生一個Fibs對象:
>>>fibs = Fibs()
可在for循環中使用該對象---比如去查找在斐波那契數列中比1000大的數中的最小的數:
>>> for f in fibs:
        if f >1000:
            print f
            break

正式的說法是,一個實現了__iter__方法的對象是可迭代的,一個實現了next方法的對象則是迭代器。

內建函數iter可以從可迭代的對象中獲得迭代器。

>>> it =iter([1, 2, 3])
>>>it.next()
1
>>>it.next()
2

從迭代器得到序列,

class TestIterator:
    value = 0
    def next(self):
        self.value +=1
        if self.value > 10: raise StopIteration
        return self.value
    def __iter__(self):
        return self

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章