python 迭代器,產生器__python

來源:互聯網
上載者:User

什麼事迭代

    可直接用作與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迴圈進行迭代
“`

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.