python 迭代器,生成器

2021-08-07 06:08:08 字數 1004 閱讀 9258

什麼事迭代

可直接用作與for迴圈的物件統稱為可迭代物件;可以被next()函式呼叫,並不斷返回下乙個值的物件稱為迭代器,

所有的iterable均可以通過內建函式iter()來轉變為iterator。

對於迭代器來講,有乙個next()就夠了。在你使用for和in語句時,程式就會自動呼叫即將被處理的物件的可迭代物件,然後使用next()方法。

**複製迭代器**

我們需要使用copy中的deepcopy

例:

>>> import copy

>>> i=iter(l)

>>> j=copy.deepcopy(i)

>>> next(i)

1>>> next(i)

2>>> next(j)

1```

**生成器**

生成器不會把結果儲存在乙個系列中,而是儲存生成器的狀態,在每次進行迭代時返回乙個值,直到遇到stopiteration異常結束。

生成器函式: 在函式中如果出現了yield關鍵字,那麼該函式就不再是普通函式,而是生成器函式。

但是生成器函式可以生產乙個無線的序列,這樣列表根本沒有辦法進行處理。

yield 的作用就是把乙個函式變成乙個 generator,帶有 yield 的函式不再是乙個普通函式,python 直譯器會將其視為乙個 generator。

**yield 與 return**:
在乙個生成器中,如果沒有return,則預設執行到函式完畢時返回stopiteration;

如果遇到return,如果在執行過程中 return,則直接丟擲 stopiteration 終止迭代。

**總結**:
生成器就是一種迭代器,可以使用for迴圈進行迭代

「`

Python 迭代器 生成器

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

python 迭代器 生成器

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

python 迭代器,生成器

以直接作用於 for 迴圈的資料型別有以下幾種 一類是集合資料型別,如 list tuple dict set str 等 一類是 generator 包括生成器和帶 yield 的generator function 這些可以直接作用於 for 迴圈的物件統稱為可迭代物件 iterable pyt...