>>> a = [1,2,3,4,5]
>>> a.append(a.pop(0))
>>> a
[2, 3, 4, 5, 1]
Cette opération est cependant coûteuse, car elle doit déplacer le contenu de la liste entière, ce qui est O(n). Un meilleur choix peut être d'utiliser collections.deque
si elle est disponible dans votre version de Python, qui permettent d'insérer et de retirer des objets à chaque extrémité en un temps approximatif de O(1) :
>>> 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 séquence original, alors que la vôtre crée une nouvelle liste et l'assigne à a
. Donc si on le faisait :
>>> c = a
>>> # rotate a
Avec votre méthode, c
continuerait à faire référence à la liste originale, non tournée, et avec mes méthodes, il fera référence à la liste mise à jour, tourné liste/deque.