def divide(iterable, parts): ''' Partitions an iterable into parts number of lists. ''' items = list(iterable) seqs = [[] for _ in xrange(parts)] while items: for i in xrange(parts): if not items: break seqs[i].append(items.pop()) return seqs