Rotating lists?

Irmen de Jong irmen at -nospam-remove-this-xs4all.nl
Wed Sep 15 18:53:07 EDT 2004


Ivan Voras wrote:
> I need to transform this:
> 
> [1,2,3]
> 
> into this:
> 
> [2,3,1]
> 
> (a left-rotation. Actually, any rotation will do).
> 
> I tried:
> 
> a = a[1:] + a[0]
> 
> which doesn't work because there's no __add__ between a list and 
> integer, and:
> 
> a = a[1:].append(a[0])
> 
> but it doesn't work, since append returns None :( Right now, I'm doing 
> it with a temporary variable and it looks ugly - is there an elegant way 
> of doing it?
> 

This smells like a use-case for itertools.cycle:

 >>> import itertools
 >>> c=itertools.cycle( [1,2,3] )
 >>> c.next()
1
 >>> c.next()
2
 >>> c.next()
3
 >>> c.next()
1
 >>> c.next()
2

... or is this not what you need to rotate your lists for?

--Irmen de Jong




More information about the Python-list mailing list