Python 生成器, 迭代器, 可迭代物件的區別

2022-05-01 23:57:14 字數 518 閱讀 3785

1.可迭代物件

在python中, 一切皆物件, 但凡是可以用for迴圈進行遍歷取值的物件都可以稱之為可迭代物件, 可迭代物件在程式的乙個執行週期中,可以無限輪次的進行迴圈遍歷

2.迭代器

a.乙個可迭代物件主要包含兩個部分

1)序列    2)迭代器

b.乙個可迭代物件通過__iter__()便可以獲得乙個迭代器, 這個迭代器可以通過for進行迴圈取值, 迭代器的遍歷只可以向前不可以向後(序列),也就是說乙個迭代器,遍歷取值完以後就會被銷毀.

c.迭代器必須實現next()方法, 每呼叫一次next()方法,就會取出乙個數值,當取完值以後,如果繼續呼叫next()方法就會丟擲異常, for 內部就實現了next()方法, 並進行了異常的處理

d.可迭代物件是將資料全部儲存在記憶體中, 而使用迭代器, 可以在需要使用時,再進行遍歷取值, 節省記憶體開銷

3.生成器

乙個生成器就是乙個特殊的迭代器,只需要乙個yield關鍵字就可以實現乙個生成器, 生成器一定是迭代器,但迭代器不一定是生成器

迭代器,生成器,可迭代

生成器有兩種 生成器表示式 x x for x in 1,2,3 yield表示式 def fib max n,a,b 0,0,1 while n max yield b a,b b,a b n n 1 return done 迭代器,有next 方法可以通過next 不斷地獲得下乙個元素的就是迭代...

Python 可迭代物件 迭代器 生成器

在討論可迭代物件和迭代器之前,我們先來了解一下什麼是迭代器 迭代器是一種最簡單也最常見的設計模式。它可以讓使用者透過特定的介面巡訪容器中的每乙個元素而不用了解底層的實現。維基百科 迭代是資料處理的基石。當記憶體中放不下資料集時,我們要找到一種惰性獲取資料的方式,即按需一次獲取乙個資料項,這就是迭代器...

python可迭代物件 迭代器 生成器

乙個擁有 iter 方法的物件,可以使用for迴圈遍歷 可迭代物件有 str list tuple dict set iterator generator file 判斷乙個物件是否可迭代 from collections import iterable isinstance abc iterabl...