什麼事迭代:
可直接用作與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循環進行迭代
“`