可迭代對象 以直接作用於 for 迴圈的數據類型有以下幾種: 一類是集合數據類型,如 list 、 tuple 、 dict 、 set 、 str 等; 一類是 generator ,包括生成器和帶 yield 的generator function。 這些可以直接作用於 for 迴圈的對象統稱為 ...
可迭代對象
以直接作用於 for 迴圈的數據類型有以下幾種:
一類是集合數據類型,如 list 、 tuple 、 dict 、 set 、 str 等;
一類是 generator ,包括生成器和帶 yield 的generator function。
這些可以直接作用於 for 迴圈的對象統稱為可迭代對象: Iterable 。
判斷是否可以迭代
可以使用 isinstance() 判斷一個對象是否是 Iterable 對象
而生成器不但可以作用於 for 迴圈,還可以被 next() 函數不斷調用並返回下一個值,直到最後拋出 StopIteration 錯誤表示無法繼續返回下一個值了。
迭代器
可以被next()函數調用並不斷返回下一個值的對象稱為迭代器:Iterator。
可以使用 isinstance() 判斷一個對象是否是 Iterator 對象:
iter()函數
生成器都是 Iterator 對象,但 list 、 dict 、 str 雖然是 Iterable ,卻不是 Iterator 。
把 list 、 dict 、 str 等 Iterable 變成 Iterator 可以使用 iter() 函數
最後
-
凡是可作用於 for 迴圈的對象都是 Iterable 類型;
-
凡是可作用於 next() 函數的對象都是 Iterator 類型
-
集合數據類型如 list 、 dict 、 str 等是 Iterable 但不是 Iterator ,不過可以通過 iter() 函數獲得一個 Iterator 對象。