2009-07-31 7 views

Respuesta

25
>>> a = [1,2,3,4,5] 
>>> a.append(a.pop(0)) 
>>> a 
[2, 3, 4, 5, 1] 

Esto es caro, sin embargo, ya que tiene que cambiar el contenido de toda la lista, que es O (n). Una mejor opción puede ser utilizar collections.deque si está disponible en su versión de Python, que permitir que objetos sean insertados y retirados de cualquiera de los extremos en aproximadamente O (1) tiempo:

>>> a = collections.deque([1,2,3,4,5]) 
>>> a 
deque([1, 2, 3, 4, 5]) 
>>> a.rotate(-1) 
>>> a 
deque([2, 3, 4, 5, 1]) 

Tenga en cuenta también que tanto estas soluciones implica cambiar el objeto de la secuencia original, mientras que el suyo crea una nueva lista y la asigna al a. Así que si lo hicimos:

>>> c = a 
>>> # rotate a 

Con su método, c continuaría haciendo referencia a la lista original, sin girar, y con mis métodos, se referirá a la actualización, girar lista/deque.

Cuestiones relacionadas