a sequence question
todddeluca at gmail.com
todddeluca at gmail.com
Tue Feb 1 16:00:24 EST 2005
Chris Wright wrote:
> Hi,
>
> 1) I want to iterate over a list "N at a time"
> sort of like:
>
> # Two at a time... won't work, obviously
>
> >>> for a, b in [1,2,3,4]:
> ... print a,b
> ...
> Traceback (most recent call last):
> File "<interactive input>", line 1, in ?
> TypeError: unpack non-sequence
> >>>
>
>
> Is there a nifty way to do with with list comprehensions,
> or do I just have to loop over the list ?
>
> cheers and thanks
>
> chris wright
I wouldn't call this nifty, but it does use list comprehensions:
(n-(len(l)%n))%n is the amount of padding
(len(l)+(n-(len(l)%n))%n)/n is the number of groups (calculated by
adding the padding to the length of l and then dividing by n)
>>> l = range(10)
>>> n = 3
>>> [(l+[None]*((n-(len(l)%n))%n))[i*n:(i+1)*n] for i in
xrange((len(l)+(n-(len(l)%n))%n)/n)]
[[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, None, None]]
Regards,
Todd
More information about the Python-list
mailing list