擅长:python、mysql、java
<p>你这里有点小问题。您希望函数to printer()为每个组获取一个生成器,但实际上您有一个生成所有组的生成器。在我看来,你有两个选择:</p>
<p>1)改变big_gen()以产生发电机:</p>
<pre><code>import random
def big_gen():
i = 0
group = 'a'
while group != 'd':
def gen():
i += 1
yield i
if random.random() < 0.20:
group = chr(ord(group) + 1)
yield group, gen
from itertools import imap
imap(lambda a: printer(*a), big_gen())
</code></pre>
<p>2)更改printer()以保持状态并在组更改时通知(保留原来的big_gen()函数):</p>
^{pr2}$