首頁 > 後端開發 > Python教學 > Python 中的迭代器與生成器:何時使用哪一個?

Python 中的迭代器與生成器:何時使用哪一個?

Linda Hamilton
發布: 2024-11-25 19:16:11
原創
703 人瀏覽過

Iterators vs. Generators in Python: When to Use Which?

Python 中的產生器與迭代器

Python的迭代器和生成器都是可迭代的,但它們的實作和使用有所不同

迭代器

迭代器是可迭代對象,提供用於遍歷專案序列的介面。它們有兩個主要方法:

  • __iter__:傳回迭代器本身,允許其迭代多次。
  • __next__:傳回序列中的下一項。當沒有更多項目時引發 StopIteration。

產生器

產生器是一種特殊類型的迭代器,它使用yield 關鍵字動態產生值。呼叫時,生成器函數傳回一個可以迭代的生成器物件。

在內部,生成器儲存一個掛起的執行狀態,用於追蹤迭代中的目前位置。當迭代產生器時, __next__ 方法還原掛起的函數並產生下一個值。然後再次暫停執行,直到下一次迭代。

用例

  • 使用迭代器:

    • 使用迭代器:
    當您需要跨台維護狀態時(例如,帶有複雜行為)。
  • 當您需要公開除迭代之外的其他方法時(例如,具有 current() 和 next() 方法的類別)。

    • 使用產生器:
    • 當簡單性和效率都重要時優先順序。
    當您想要延遲產生值而不儲存中間列表時。
當您想要暫停和恢復迭代時(例如,暫停計算以供稍後使用)使用)。

範例
def squares(start, stop):
    for i in range(start, stop):
        yield i * i
登入後複製

考慮以下為給定範圍產生平方數的函數: 該函數建立一個生成器,一次產生一個平方數。它比列表理解或自訂迭代器更有效,因為它避免創建所有平方值的中間列表。

以上是Python 中的迭代器與生成器:何時使用哪一個?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板