python面試題之迭代器和生成器的區別

2021-09-26 18:48:45 字數 543 閱讀 7360

1 迭代器是乙個更抽象的概念,任何物件,如果它的類有next方法和iter方法返回自己本身。對於string、list、dict、tuple等這類容器物件,使用for迴圈遍歷是很方便的。在後台for語句對容器物件呼叫iter()函式,iter()是python的內建函式。iter()會返回乙個定義了next()方法的迭代器物件,它在容器中逐個訪問容器內元素,next()也是python的內建函式。在沒有後續元素時,next()會丟擲乙個stopiteration異常

2 生成器(generator)是建立迭代器的簡單而強大的工具。它們寫起來就像是正規的函式,只是在需要返回資料的時候使用yield語句。每次next()被呼叫時,生成器會返回它脫離的位置(它記憶語句最後一次執行的位置和所有的資料值)

區別:生成器能做到迭代器能做的所有事,而且因為自動建立了__iter__()和next()方法,生成器顯得特別簡潔,而且生成器也是高效的,使用生成器表示式取代列表解析可以同時節省記憶體。除了建立和儲存程式狀態的自動方法,當發生器終結時,還會自動丟擲stopiteration異常

本文首發於python黑洞網,csdn同步跟新

python面試題之迭代器和生成器的區別

1 迭代器是乙個更抽象的概念,任何物件,如果它的類有next方法和iter方法返回自己本身。對於string list dict tuple等這類容器物件,使用for迴圈遍歷是很方便的。在後台for語句對容器物件呼叫iter 函式,iter 是python的內建函式。iter 會返回乙個定義了nex...

關於迭代器的面試題

include include include using namespace std void printmy vector int main itor printmy vecint return 0 void printmy vectorvec 問輸出是幾?在dev編譯執行以後,結果是3,程式設...

python語法面試題 python面試題

1.去重,集合 集合的乙個重要特點是 自動去除重複的值 li 1,2,3,1,1,2,2,3,3 去除重複的元素 set set li 轉換為集合,因為集合會自動去重。print set li list set 將集合轉換為列表print li 2.生成器 規則 生成器函式,或者生成器表示式,在呼叫...