发电机我使用发电机功能,说:现在深拷贝在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