面試題 Python中迭代器和生成器的區別

2021-10-10 18:01:04 字數 526 閱讀 7505

迭代器與生成器的區別:

(1)生成器:

生成器本質上就是乙個函式,它記住了上一次返回時在函式體中的位置。

對生成器函式的第二次(或第n次)呼叫,跳轉到函式上一次掛起的位置。

而且記錄了程式執行的上下文。

生成器不僅「記住」了它的資料狀態,生成還記住了程式執行的位置。

(2)迭代器

迭代器是一種支援next()操作的物件。它包含了一組元素,當執行next()操作時,返回其中乙個元素。

當所有元素都被返回後,再執行next()報異常—stopiteration

生成器一定是可迭代的,也一定是迭代器物件

(3)區別:

①生成器是生成元素的,迭代器是訪問集合元素的一中方式

②迭代輸出生成器的內容

③迭代器是一種支援next()操作的物件

④迭代器(iterator):其中iterator物件表示的是乙個資料流,可以把它看做乙個有序序列,但我們不能提前知道序列的長度,只有通過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.生成器 規則 生成器函式,或者生成器表示式,在呼叫...

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

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