如何在 Python 中重置生成器物件?

Susan Sarandon
發布: 2024-10-30 14:02:03
原創
461 人瀏覽過

How to Reset a Generator Object in Python?

在Python 中重設產生器物件:探索替代方案

產生器提供了一種迭代值序列的有效方法,而無需在記憶中。然而,一旦生成器產生了所有值,它就會耗盡並且不能直接重複使用。這就提出瞭如何在 Python 中重置生成器物件的問題。

不幸的是,生成器沒有內建的重置方法。要重複使用產生器,您有多種選擇:

  1. 再次運行生成器函數:最簡單的方法是再次運行生成器函數,創建一個新的生成器對象。此選項可確保生成器從其初始狀態開始,重新計算任何必要的值。
  2. 將生成器結果儲存在資料結構中:或者,您可以將生成器的結果儲存在資料結構,例如清單或陣列。這允許您多次迭代這些值,而無需重新運行生成器函數。但是,此選項為整個值序列分配內存,這可能是大型生成器的一個問題。

請考慮每個選項的以下程式碼摘錄:

選項1(再次執行產生器函數):

<code class="python">y = FunctionWithYield()
for x in y: 
    print(x)
y = FunctionWithYield()
for x in y: 
    print(x)</code>
登入後複製

選項2(將產生器結果儲存在清單中):

<code class="python">y = list(FunctionWithYield())
for x in y: 
    print(x)
# Can iterate again:
for x in y: 
    print(x)</code>
登入後複製

選項這些選項之間的選擇取決於您的程式的特定要求。對於小型生成器或重新運行生成器函數的計算成本並不高,選項 1 更有效。選項 2 更適合大型生成器,可以將結果儲存在記憶體中。

以上是如何在 Python 中重置生成器物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!