Python 迭代器

迭代器是訪問集合元素的一種方式
迭代器是一個(gè)可以記住遍歷的位置的對(duì)象
迭代器對(duì)象從集合的第一個(gè)元素開始訪問,直到所有元素被訪問完結(jié)束
迭代器只能向前,不能后退

1.接作用于 for 循環(huán)的數(shù)據(jù)類型有以下幾種:

  • 一類是結(jié)合數(shù)據(jù)類型,如list、 tuple、 dict、 set、 str
  • 一類是 generator, 包括生成器和帶 yiedgenerator function

這些可以直接作用于 for 循環(huán)的對(duì)象稱為可迭代對(duì)象:Iterable

2.判斷是否可以迭代
可以使用 isinstance() 判斷一個(gè)對(duì)象是否是 iterable 對(duì)象:

In [10]: from collections import Iterable

In [12]: isinstance('asd', Iterable)
Out[12]: True

In [13]: isinstance([], Iterable)
Out[13]: True

In [14]: isinstance({}, Iterable)
Out[14]: True

In [16]: isinstance((x for x in range(10)), Iterable)
Out[16]: True

3.可以被 next() 函數(shù)調(diào)用并不斷返回下一個(gè)值的對(duì)象稱為迭代器:Iterator

In [4]: from collections import Iterator

In [5]: isinstance((x for x in range(10)), Iterator)
Out[5]: True

In [6]: isinstance([],Iterator)
Out[6]: False

In [7]: isinstance({}, Iterator)
Out[7]: False

In [8]: isinstance('sfhj', Iterator)
Out[8]: False

In [9]: isinstance(345, Iterator)
Out[9]: False

In [10]: 

4.Iter() 函數(shù)
生成器都是 Iterator 對(duì)象,但 listdict、str 雖然是 Interable, 卻不是 Iterator
list、 dict、 strIterable 變成Iterator 可以使用 inter()函數(shù):

In [17]: from collections import Iterator

In [18]: isinstance(iter([]), Iterator)
Out[18]: True

In [19]: isinstance(iter({}), Iterator)
Out[19]: True

In [21]: isinstance(iter('fsd'), Iterator)
Out[21]: True

總結(jié)

  • 凡是可作用于 for 循環(huán)的對(duì)象都是 Iterable 類型
  • 凡是可作用于 next() 函數(shù)的對(duì)象都是 Iterator 類型
  • 集合數(shù)據(jù)類型如 list、 dict、 strIterable 但不是 Iterator, 不過可以通過 iter() 函數(shù)獲得一個(gè) Iterator 對(duì)象
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 迭代是訪問集合元素的一種方式。迭代器是一個(gè)可以記住遍歷的位置的對(duì)象。迭代器對(duì)象從集合的第一個(gè)元素開始訪問,直到所有...
    youngkun閱讀 667評(píng)論 0 0
  • 直接作用于for循環(huán)的數(shù)據(jù)類型有以下幾種: 一類是集合數(shù)據(jù)類型,如list、tuple、dict、set、str等...
    json_jie閱讀 219評(píng)論 0 0
  • 迭代器 迭代是訪問集合元素的一種方式。迭代器是一個(gè)可以記住遍歷的位置的對(duì)象。迭代器對(duì)象從集合的第一個(gè)元素開始訪問,...
    Oo晨晨oO閱讀 441評(píng)論 0 0
  • 可迭代對(duì)象Iterable 可迭代對(duì)象是什么?簡單點(diǎn)說,那些能被for循環(huán)的對(duì)象就是可迭代對(duì)象。精確一點(diǎn)來說可迭代...
    __Aster__閱讀 556評(píng)論 0 0
  • 迭代是訪問集合元素的一種方式。迭代器是一個(gè)可以記住遍歷的位置的對(duì)象。迭代器對(duì)象從集合的第一個(gè)元素開始訪問,直到所有...
    壁花燒年閱讀 360評(píng)論 0 0

友情鏈接更多精彩內(nèi)容