eof

Duncan Booth duncan.booth at invalid.invalid
Thu Nov 22 09:00:10 EST 2007


Boris Borcic <bborcic at gmail.com> wrote:

> Duncan Booth wrote:
>> import itertools
>> def chunks(f, size):
>>     iterator = iter(f)
>>     def onechunk(line):
>>         yield line
>>         for line in itertools.islice(iterator, size-1):
>>             yield line
>>     for line in iterator:
>>         yield onechunk(line)
> 
> Quite simpler, and provides chunk# as well :)
> 
> def chunked(chunksize,f) :
>      from itertools import count,groupby
>      counter=count(chunksize).next
>      return groupby(f,lambda _ : counter()/chunksize)
> 

Nice, thank you. But why 'count(chunksize)' rather than just 'count()'? 
Does it make a difference anywhere? And I'd recommend using // rather than 
/ otherwise it breaks if you do 'from __future__ import division':

def chunked(chunksize,f) :
     from itertools import count,groupby
     counter=count().next
     return groupby(f,lambda _ : counter()//chunksize)




More information about the Python-list mailing list