發電機我使用發電機功能,說:現在深拷貝在Python
def foo():
i=0
while (i<10):
i+=1
yield i
,我想任何數量的迭代後,發電機複製選項,從而使新副本保留內部狀態(在示例中將具有相同的'i'),但現在將獨立於原始狀態(即,對副本的迭代不應改變原始狀態)。
我一直在使用copy.deepcopy
嘗試,但我得到的錯誤:
"TypeError: object.__new__(generator) is not safe, use generator.__new__()"
很顯然,我可以解決這個使用常規的功能與計數器的例子。 但我真的在尋找使用生成器的解決方案。
我不*認爲*這是可能的。如果你只需要對結果進行兩次迭代,那麼讀到'list'並多次迭代'list',或者'itertools.tee'可能會有所幫助。它不會複製生成器,但它只是將結果存儲在隊列中,並稍後再將它們吐出。因此,當你閱讀「複製」(這可能是你想要從一個生成器的真正克隆中想要的)時,你的函數的任何副作用都不會再被執行,並且如果你從「複製」中讀取它*將推進底層的發電機 - 一旦你已經注意到你基本上需要所有的讀者使用T恤,而不是原裝。 –
你真的想解決什麼問題?有多種可能的答案。 –
您可能已經知道這一點,但「Define」不是合法的python。正確的關鍵字是'def' – SethMMorton