生成器和迭代器

2021-07-25 02:34:04 字數 1131 閱讀 5794

可以直接作用於for迴圈的物件稱為可迭代物件——>>>iterable.

可以用isinstance()判斷乙個物件是否是iterable物件。

>>> isinstance('',iterable)

true

>>> isinstance([ ],iterable)

true

>>> isinstance(235,iterable)

false

而生成器不但可以作用於for迴圈,還可以被next()函式不斷呼叫並返回下乙個值,直到最後丟擲stopiteration錯誤表示無法繼續返回下乙個值了。

可以被next()函式呼叫並不斷返回下乙個值的物件稱為迭代器:iterator

可以使用isinstance()判斷乙個物件是否是iterator物件:

>>> isinstance((x for x in range(6)),iterator)

true

>>> isinstance([ ],iterator)

false

總結:

凡是可作用於for迴圈的物件都是iterable型別;

凡是可作用於next()函式的物件都是iterator型別,它們表示乙個惰性計算的序列;

集合資料型別如listdictstr等是iterable但不是iterator,不過可以通過iter()函式獲得乙個iterator物件

迭代器和生成器

1 迭代器的概念 print dir 告訴我列表的所有用法 有雙下劃線的所有方法叫做雙下方法,是c語言已經寫好的方法。你可以用不止一種方法呼叫它。列表的用法變集合 set dir 求交集 set dir set dir set dir 求列表,字典,字串它們的用法的交集 他們共同的用法 iterab...

生成器和迭代器

1.iterator 迭代器 舉例 我們對list使用for for i in 1,2,3,4 print i 12 34對string物件使用for for ch in python print ch py thon對字典物件使用for for k in print k yx對檔案使用for fo...

迭代器和生成器

迭代器 迭代 iterate 意味著重複多次,就像迴圈那樣。本書前面只使用for迴圈迭代過序列和字典,但實際上也可迭代其他物件 實現了方法iter的物件。方法iter返回乙個迭代器,它是包含next的物件,而呼叫這個方法時可不提供任何引數。當你呼叫方法next時,迭代器應返回其下乙個值。如果迭代器沒...