slice iterator?

John O'Hagan research at johnohagan.com
Sat May 9 06:05:13 CEST 2009


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



More information about the Python-list mailing list