>>> a = [1,2,3,4,5]
>>> a.append(a.pop(0))
>>> a
[2, 3, 4, 5, 1]
Dies ist teuer, obwohl, wie es um den Inhalt der gesamten Liste zu verschieben, aufweist, die O (n) ist. Eine bessere Wahl sein kann collections.deque
zu verwenden, wenn es in Ihrer Version von Python zur Verfügung, die Objekte ermöglichen eingefügt und von beiden Enden in etwa O (1) Zeit entfernt werden:
>>> 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 Dazu gehört das Ändern des ursprünglichen Sequenzobjekts, während deins eine neue Liste erstellt und sie a
zuweist. Also, wenn wir haben:
>>> c = a
>>> # rotate a
Mit Ihrer Methode, c
auf die ursprüngliche, nicht gedrehten Liste verweisen weiterhin, und mit meinen Methoden, wird es auf die aktualisierte beziehen, gedreht Liste/deque.