假设我有一个像这样的生成器函数:
import random
def big_gen():
i = 0
group = 'a'
while group != 'd':
i += 1
yield (group, i)
if random.random() < 0.20:
group = chr(ord(group) + 1)
示例输出可能是:('a', 1), ('a', 2), ('a', 3), ('a', 4), ('a', 5), ('a', 6), ('a', 7), ('a', 8), ('b', 9), ('c', 10), ('c', 11), ('c', 12) , ('c', 13)
我想把它分成三组:A 组、B 组和 C 组。我希望每个组都有一个生成器。然后我将生成器和组字母传递给子函数。子函数的一个例子:
def printer(group_letter, generator):
print "These numbers are in group %s:" % group_letter
for num in generator:
print "\t%s" % num
所需的输出将是:
These numbers are in group a:
1
2
3
4
5
6
7
8
These numbers are in group b:
9
These numbers are in group c:
10
11
12
13
如何在不更改 big_gen() 或 printer() 的情况下做到这一点,并避免一次将整个组存储在内存中?(在现实生活中,群体很大)