2009-07-31 6 views

Répondre

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

Ceci est cher, mais, comme il doit déplacer le contenu de la liste entière, qui est O (n). Un meilleur choix peut être d'utiliser collections.deque si elle est disponible dans votre version de Python, qui permettent aux objets à insérer et retirés de chaque extrémité approximativement O (1) Temps:

>>> 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]) 

Notez également que ces deux solutions impliquent de modifier l'objet de séquence d'origine, alors que le vôtre crée une nouvelle liste et l'affecte à a. Donc, si nous avons fait:

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

Avec votre méthode, c continuerait de se référer à la liste originale, non réorientée, et avec mes méthodes, il se référera à la mise à jour, mis en rotation liste/deque.

Questions connexes