Rotating lists?

Peter Hansen peter at engcorp.com
Thu Sep 16 00:53:00 CEST 2004


Ivan Voras wrote:

> I need to transform this:
> [1,2,3]
> into this:
> [2,3,1]
> 
> Right now, I'm doing 
> it with a temporary variable and it looks ugly - is there an elegant way 
> of doing it?

 >>> l = range(1, 4)
 >>> l
[1, 2, 3]
 >>> import itertools
 >>> list(itertools.islice(itertools.cycle(l), 1, len(l)+1))
[2, 3, 1]

That is, build an iterator that cycles over l indefinitely,
then take a slice of it starting x items in (where x==1 in
this case) and continuing until you've retrieved a number
of elements equal to the length of the original sequence.

-Peter



More information about the Python-list mailing list