Python 生成器 迭代器 對比

2021-10-06 10:44:56 字數 990 閱讀 6207

生成器和迭代器是兩個容易混淆的函式,因此分別介紹一下生成器,迭代器,再對比兩者的區別

迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。

迭代器有兩個基本的方法:iter()next()

list=[

1,2,

3,4]

it =

iter

(list

)for _ in

range(5

):print

(next

(it)

)

生成器是乙個返回迭代器的函式,只能用於迭代操作,更簡單點理解生成器就是乙個迭代器

在呼叫生成器執行的過程中,每次遇到 yield 時函式會暫停並儲存當前所有的執行資訊,返回 yield 的值, 並在下一次執行 next() 方法時從當前位置繼續執行

迭代器的基本方法:yield()

def

reverse

(data)

:for index in

range

(len

(data)-1

,-1,

-1):

yield data[index]

for c in reverse(

'python'):

print

(c, end=

'')

迭代器:將迭代物件中的內容都在記憶體裡,使用next 函式來依次往下遍歷。占用記憶體資源,但可以減少重複計算的運算資源

生成器:則不會存放內容在記憶體中,每次呼叫next函式時,返回本次yield之前計算的結構,並清除記憶體。不占用記憶體資源,但需要在每次呼叫生成器函式的消耗計算資源

Python 迭代器 生成器

可以直接作用於for迴圈的物件,統稱為可迭代物件 iterable。iterator物件表示的是乙個資料流,iterator物件可以被next 函式呼叫並不斷返回下乙個資料,直到沒有資料時丟擲stopiteration錯誤。可以把這個資料流看做是乙個有序序列,但我們卻不能提前知道序列的長度,只能不斷...

python 迭代器,生成器

什麼事迭代 可直接用作與for迴圈的物件統稱為可迭代物件 可以被next 函式呼叫,並不斷返回下乙個值的物件稱為迭代器,所有的iterable均可以通過內建函式iter 來轉變為iterator。對於迭代器來講,有乙個next 就夠了。在你使用for和in語句時,程式就會自動呼叫即將被處理的物件的可...

python 迭代器 生成器

知識背景 1 呼叫乙個普通的python函式時,一般是從函式的第一行 開始執行,結束於return語句 異常或者函式結束 可以看作隱式的返回none 2 一旦函式將控制權交還給呼叫者,就意味著全部結束。函式中做的所有工作以及儲存在區域性變數中的資料都將丟失 3 再次呼叫這個函式時,一切都將從頭建立。...