On Sat, 9 May 2009, John O'Hagan wrote: > On Sat, 9 May 2009, Ross wrote: > > lists. Let's say I had a list a = [1,2,3,4,5,6,7,8,9,10,11,12] and I > > wanted to split it into groups of 2 or groups of 3 or 4, etc. Is there > > a way to do this without explicitly defining new lists? If the above > > problem were to be split into groups of 3, I've tried something like: [..] > > This seems to work: > >>> for i in range (len(a) / 3): > > ... segment = a[3 * i:3 * (i + 1)] > ... print segment [...]
But if len(a) is not divisible by the increment, that misses the last (short) slice, so using the step argument to range: >>> for i in range (0, len(a), 3): ... segment = a[i:i + 3] ... print segment is better. Or as a list comprehension: [a[i:i + 3] for i in range (0, len(a), 3)] HTH, John -- http://mail.python.org/mailman/listinfo/python-list