比方说,我有发电机功能是这样的:Python函数可以使用生成器并将生成器返回到其生成的输出的子集?
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),( 'A',3),( (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()或打印机(),并避免在存储器中存储整个组在一旦? (在现实生活中,这些群体是巨大的)
在现实生活中,可以多次行走大型发电机吗?或者数据是否以某种不可挽回的方式消耗?如果我正确理解你的例子,那么调用random()的状态不会被存储在任何有用的地方,所以你不能再次使用该生成器。 – Nelson 2009-08-01 00:43:55