def chunks(iterable, size, longest=True, fillwith=None): iterable = iter(iterable) while True: ret = () try: for x in xrange(size): ret += (iterable.next(), ) except StopIteration: if longest and ret: while len(ret) < size: ret += (fillwith, ) yield ret return yield ret