python中的可迭代物件與迭代器

2021-08-31 01:41:15 字數 994 閱讀 1700

可迭代協議:只要含有『__iter__()』方法的資料型別都是可迭代的

可迭代物件:列表,字串,等。整數型別不可迭代

特點:可迭代物件都可用for迴圈。

檢測某個變數/值是否為可迭代的方法:

方法一:

print('__iter__' in dir())

print('__iter__' in dir(123))

結果為:

true

false

方法二:

from collections import iterable

print(isinstance(,iterable))

print(isinstance(123,iterable))

使用內建函式檢測

迭代器:

迭代器協議:含有'__iter_()','__next__()'方法的變數、值都是迭代器。

迭代器都是可迭代物件,而可迭代物件一定不是迭代器。

以上是迭代器中有而迭代物件沒有的方法。

l = [1,2,3,4]

res1 = l.__iter__()

res2 = l.__iter__()

其中的res1,res2 都是迭代器

print(res1.__next__())
通過呼叫一次__next__()方法輸出一次迭代器裡的乙個值,桶過多次呼叫輸出全部值。

迭代器的特點:

節省記憶體      

惰性運算

只能取一次

只能按照順序取

for迴圈與迭代器之間的關係:

如果for迴圈物件不是迭代器,for會幫我們把這個非迭代器變成迭代器(通過內建的__iter__()方法)

如果是迭代器,會幫我們執行next方法從迭代器中取值

幫助處理異常,停止迭代。

Python高階專題 可迭代物件協議以及迭代器

1.迭代協議與可迭代物件 只有實現了迭代協議 iter 才可以稱為可迭代物件 2.迭代器 訪問集合內元素的方式,用於遍歷資料,但是無法返回,提供了惰性訪問資料,同時實現了 iter 以及 next 協議 from collections.abc import iterable,iterator it...

python迭代 可迭代物件與迭代器物件

問題舉例 某軟體要求,從網路抓取各個城市的氣溫資訊,並依次顯示 北京 15 22 上海 18 23 如果一次抓取所有城市氣溫資訊再顯示,顯示第乙個城市的氣溫時會由很長的延時,並且浪費儲存空間,我們期望以 用時訪問 的策略,並且把所有城市的氣溫資訊封裝 到乙個物件裡,可用for語句進行迭代。來個栗子 ...

python中 可迭代物件

迭代是訪問集合元素的 種 式。迭代器是 個可以記住遍歷的位置的物件。迭代器物件從集合的第 個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。我們已經知道可以對list tuple str等型別的資料使 for in 的迴圈語法從 其中依次拿到資料進 使 我們把這樣的過程稱為遍歷,也...