Given a List, iterator or a Range yield the result in chunks of items
#returns lazily an iterator,range,list in chunks
def chunker(it,size):
rv = []
for i,el in enumerate(it,1) :
rv.append(el)
if i % size == 0 :
yield rv
rv = []
if rv : yield rv
Example :
: list(chunker(range(0,10),3)) : [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9]] : [ sum(x) for x in chunker(range(0,10),3) ] : [3, 12, 21, 9]