Francesco Bochicchio wrote: > Not sure I understood your question, but if you need just to plit a > big list in sublists of no more than 9 elements, then you can do > someting like: > > def sublists(biglist, n ): > "Splits a big list in sublists of max n elements" > prev_idx = 0; res = [] > for idx in xrange(n, len(biglist)+n, n ): > res.append( biglist[prev_idx:idx] ) > prev_idx = idx > return res > > I would not be surprised if somewhere in python standard library there > is something like this (possibly better), but > could not find anything.
A lazy alternative: >>> from itertools import islice >>> def chunks(items, n): ... items = iter(items) ... for first in items: ... chunk = [first] ... chunk.extend(islice(items, n-1)) ... yield chunk ... >>> list(chunks(range(10), 3)) [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9]] One with lazy chunks: >>> from itertools import chain, islice >>> def chunks(items, n): ... items = iter(items) ... for first in items: ... yield chain((first,), islice(items, n-1)) ... >>> [list(chunk) for chunk in chunks(range(10), 3)] [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9]] Prior art by Duncan Booth: http://mail.python.org/pipermail/python-list/2007-November/517993.html Peter -- http://mail.python.org/mailman/listinfo/python-list