擅长:python、mysql、java
<p>如前所述,没有这样的功能,因为生成器的整个点都是具有较小的内存占用。您需要存储结果</p>
<p>您可以自动存储以前的结果。生成器的一个用例是当您有一个概念上无限的列表(例如素数列表)时,您只需要一个初始段。您可以编写一个生成器,作为副作用构建这些初始段。有一个可选的<code>history</code>参数,生成器在生成时附加到该参数。例如:</p>
<pre><code>def wordbyword(history = None):
words = ["a","b","c","d","e"]
for word in words:
if isinstance(history,list): history.append(word)
yield word
</code></pre>
<p>如果使用不带参数的生成器<code>getword = wordbyword()</code>,它将像普通生成器一样工作,但如果向其传递一个列表,该列表将存储不断增长的历史:</p>
<pre><code>hist = []
getword = wordbyword(hist)
print(next(getword)) #a
print(next(getword)) #b
print(hist) #['a','b']
</code></pre>