Python中的迭代器

2021-08-28 14:12:23 字數 1201 閱讀 3500

可以直接作用於for迴圈的資料型別有以下幾種:

一類是集合資料型別,如list、tuple、dict、set、str等;

一類是generator,包括生成器和帶yield的生成器函式。

這些可以直接作用於for迴圈的物件統稱為可迭代物件(iterable)。

python的for迴圈本質上就是通過不斷呼叫next()函式實現的

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

from collections import iterable

print(isinstance(,iterable))

>>>true

print(isinstance({}, iterable))

>>>true

print(isinstance('abc', iterable))

>>>true

print(isinstance((x for x in range(10)), iterable))

>>>true

print(isinstance(100, iterable))

>>>false

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

from collections import iterator

print(isinstance(,iterator))

>>>false

print(isinstance({}, iterator))

>>>false

print(isinstance('abc', iterator))

>>>false

print(isinstance((x for x in range(10)), iterator))

>>>true

print(isinstance(100, iterator))

>>>false

生成器都是迭代器,但list、dict、str雖然是可迭代物件,卻不是迭代器。

把list、dict、str等可迭代物件變成迭代器可以使用iter()函式:

print(isinstance(iter('abc'),iterator))

>>>true

python中迭代器 python中的迭代器

如果給定乙個list或tuple,我們可以通過for迴圈來遍歷這個list或tuple,這種遍歷我們稱為迭代 iteration d for key in d print key ac b當我們使用for迴圈時,只要作用於乙個可迭代物件,for迴圈就可以正常執行,而我們不太關心該物件究竟是list還...

python中的迭代器

什麼是迭代器?迭代器是帶有next方法的簡單物件,當然也要實現 iter 函式。迭代器能在一串行的值上進行迭代,當沒有可供迭代時,next方法就會引發stopiteration 的異常。python中有很多的物件都是迭代器,例如 列表,元素,字串,檔案,對映,集合 如何使用迭代器?1.for 變數 ...

python中的迭代器

python中的迭代器,正如python一樣簡單,任何物件只要擁有 iter 屬性即可,該屬性是乙個方法,且該方法返回乙個擁有 next 方法物件即可。任何物件必須滿足上面所述兩個原則才能成為迭代器。舉個例子 python中的生成器就實現了 iter 方法,同時它也實現了 next 方法,從這裡我們...