python~迭代器,生成器
阿新 • • 發佈:2018-11-20
可迭代物件:
以直接作用於 for 迴圈的資料型別有以下幾種:
一類是集合資料型別,如 list 、 tuple 、 dict 、 set 、 str 等
一類是 generator ,包括生成器和帶 yield 的generator function
這些可以直接作用於 for 迴圈的物件統稱為可迭代物件: Iterable
*Python專門為for關鍵字做了迭代器的語法糖:在for迴圈中,Python將自動呼叫內建函式iter()獲得迭代器,自動呼叫next()獲取元素,還完成了檢查StopIteration異常的工作
判斷是否可以迭代:
??isinstance(),判斷該例項是否為這個類的物件:
In [50]: from collections import Iterable In [51]: isinstance([], Iterable) Out[51]: True In [52]: isinstance({}, Iterable) Out[52]: True In [53]: isinstance('abc', Iterable) Out[53]: True In [54]: isinstance((x for x in range(10)), Iterable) Out[54]: True In [55]: isinstance(100, Iterable) Out[55]: False
而生成器不但可以作用於 for 迴圈,還可以被 next() 函式不斷呼叫並返回下一個值,直到最後丟擲 StopIteration 錯誤表示無法繼續返回下一個值了