Python/疊代器

維基教科書,自由的教學讀本
跳至導覽 跳至搜尋

疊代器是一個可以記住遍歷的位置的對象。疊代器對象從序列的第一個元素開始訪問,直到所有的元素被訪問完結束。疊代器只能往前不會後退。字符串,列表或元組對象等序列資料結構都可用於創建疊代器。

iter() 和 next()[編輯]

疊代器有兩個基本方法:iter() 和 next()。

list=[1,2,3,4]
it = iter(list)    # 创建迭代器对象
print (next(it))   # 输出迭代器的下一个元素

判斷一個對象是否可疊代[編輯]

>>> from collections import Iterable
>>> isinstance(myObj,Iterable) #myObj是否可迭代

編寫自己的可疊代對象[編輯]

編寫自己的可疊代對象(Collections::Iterable),有兩種規格。

第一種規格要求類實現特殊函數__getitem__;如果疊代完成,應raise IndexError

第二種規格要求實現一個特殊函數__iter__,該函數應該返回一個iterator對象(通常獨立設置自己的疊代index)。iterator對象是一個帶狀態的對象,調用next()方法的時候返回容器中的下一個值。iterator對象必須實現特殊函數 __next__。所以一般的做法就是在類中同時實現__iter__和__next__,然後在__iter__中返回自己。__next__函數要求依次返回需要疊代的項目,結束後raise StopIteration