python 迭代器,生成器

什麼事迭代

    可直接用作與for循環的對象統稱爲可迭代對象;可以被next()函數調用,並不斷返回下一個值的對象稱爲迭代器,
所有的Iterable均可以通過內置函數iter()來轉變爲Iterator。 
    對於迭代器來講,有一個next()就夠了。在你使用forin語句時,程序就會自動調用即將被處理的對象的可迭代對象,然後使用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。

**yieldreturn**:
在一個生成器中,如果沒有return,則默認執行到函數完畢時返回StopIteration;
如果遇到return,如果在執行過程中 return,則直接拋出 StopIteration 終止迭代。

**總結**

生成器就是一種迭代器,可以使用for循環進行迭代
“`

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章