(这个问题与这一个和这个问题有关,但那些是预先走动的发电机,这正是我想要避免的)
我想把一个发电机拆分成块.要求是:
我试过以下代码:
def head(iterable, max=10):
for cnt, el in enumerate(iterable):
yield el
if cnt >= max:
break
def chunks(iterable, size=10):
i = iter(iterable)
while True:
yield head(i, size)
# Sample generator: the real data is much more complex, and expensive to compute
els = xrange(7)
for n, chunk in enumerate(chunks(els, 3)):
for el in chunk:
print 'Chunk %3d, value %d' % (n, el)
Run Code Online (Sandbox Code Playgroud)
这有点工作:
Chunk 0, value 0
Chunk 0, value 1 …Run Code Online (Sandbox Code Playgroud)