>>> a = [1,2,3,4,5]
>>> a.append(a.pop(0))
>>> a
[2, 3, 4, 5, 1]
Dies ist jedoch teuer, da der Inhalt der gesamten Liste verschoben werden muss, was O(n) ist. Eine bessere Wahl wäre vielleicht die Verwendung von collections.deque
wenn es in Ihrer Python-Version verfügbar ist, die es ermöglichen, Objekte in ungefähr O(1)-Zeit an beiden Enden einzufügen und zu entfernen:
>>> 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])
Beachten Sie auch, dass diese beiden Lösungen eine Änderung des ursprünglichen Sequenzobjekts beinhalten, während Ihre Lösung eine neue Liste erstellt und sie der a
. Wenn wir das also tun würden:
>>> c = a
>>> # rotate a
Mit Ihrer Methode, c
würde sich weiterhin auf die ursprüngliche, nicht rotierte Liste beziehen, und mit meinen Methoden wird sie sich auf die aktualisierte beziehen, gedreht Liste/Dekade.