1. 程式人生 > >python~迭代器,生成器

python~迭代器,生成器

可迭代物件:

以直接作用於 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 錯誤表示無法繼續返回下一個值了