>>> a = [1,2,3,4,5]
>>> a.append(a.pop(0))
>>> a
[2, 3, 4, 5, 1]
Questo è costoso, anche se, come ha di spostare i contenuti dell'intera lista, che è O (n). Una scelta migliore potrebbe essere quella di utilizzare collections.deque
se è disponibile nella versione di Python, che permettono di oggetti da inserire e rimossi da entrambe le estremità in circa O (1) tempo:
>>> 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])
noti inoltre che entrambe queste soluzioni implica la modifica dell'oggetto sequenza originale, mentre il tuo crea un nuovo elenco e lo assegna a a
. Quindi, se abbiamo fatto:
>>> c = a
>>> # rotate a
Con il vostro metodo, c
avrebbero continuato a fare riferimento alla lista originale, non ruotata, e con i miei metodi, si riferiscono alla aggiornato, ruotato lista/deque.