Допустим, у меня есть функция генератора, подобная этой:
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)
Пример вывода может быть:
(«а», 1), («а», 2), («а», 3), («а», 4), («а», 5), («а», 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 (), и избегая одновременного сохранения всей группы в памяти? (В реальной жизни группы огромны )