Norah Jones wrote: > I have a list of arbitrary length, and I need to split it up into equal > size chunks. There are some obvious ways to do this, like keeping a > counter and two lists, and when the second list fills up, add it to the > first list and empty the second list for the next round of data, but this > is potentially extremely expensive. > > I was wondering if anyone had a good solution to this for lists of any > length > > This should work: > > l = range(1, 1000) > print chunks(l, 10) -> [ [ 1..10 ], [ 11..20 ], .., [ 991..999 ] ] > > I was looking for something useful in itertools but I couldn't find > anything obviously useful.
Look again, for the grouper() recipe. For lists you can also use slicing: >>> items ['a', 'b', 'c', 'd', 'e', 'f', 'g'] >>> n = 3 >>> [items[start:start+n] for start in range(0, len(items), n)] [['a', 'b', 'c'], ['d', 'e', 'f'], ['g']] -- http://mail.python.org/mailman/listinfo/python-list