1. 程式人生 > >python3 叠代器和生成器

python3 叠代器和生成器

gpo 不同的 生成器 遇到 邏輯 r語 pos 固定 for

叠代器

叠代是python最強大的功能之一,是訪問集合元素的一種方式。

叠代器是一個可以記住遍歷位置的對象。

叠代器從集合的第一個元素開始訪問,直到所有的元素被訪問完結束。叠代器只能往前不會後退。

叠代器有兩個基本方法:iter() 和next()

字符串、列表、或元組對象都可用於創建叠代器。

技術分享圖片

叠代器對象可以使用常規for語句進行遍歷

技術分享圖片

也可以使用next()函數

技術分享圖片

生成器

在python中,使用了yield的函數被稱為生成器(generator)。

跟普通函數不同的是,生成器是一個返回叠代器的函數,只能用於叠代操作,更簡單點理解生成器就是一個叠代器。

在調用生成器運行的過程當中,每次遇到yield時函數會暫停並保存當前所有的運行信息,返回yield的值,並在下次執行next()方法時從當前位置繼續運行。

調用一個生成器函數,返回的是一個叠代器對象。

技術分享圖片

技術分享圖片

對比有yield和沒有的情況

技術分享圖片

有yield執行結果技術分享圖片

技術分享圖片

無yield執行結果

技術分享圖片

什麽情況下需要使用yield?

一個函數f,f返回一個list,這個list是動態計算出來的(不管是數學上的計算還是邏輯上的讀取格式化),並且這個list會很大(無論是固定很大還是隨著輸入參數的增大而增大),這個時候,我們希望每次調用這個函數並使用叠代器進行循環的時候一個一個的得到每個list元素而不是直接得到一個完整的list來節省內存,這個時候yield就很有用。

python3 叠代器和生成器