Werte verschieben, aber die Reihenfolge in einer Python-Liste beibehalten [duplizieren]

8

Ich habe eine Liste

%Vor%

und möchte seine Werte so verschieben, dass sie sich in

ändern %Vor%

und der nächste Schritt

%Vor%

Gibt es dafür in Python eine eingebaute Funktion?

Oder gibt es einen kürzeren oder netteren Weg als

? %Vor%     
sloth 31.07.2009, 11:26
quelle

1 Antwort

25
%Vor%

Dies ist jedoch teuer, da es den Inhalt der gesamten Liste verschieben muss, nämlich O (n). Eine bessere Wahl ist es, collections.deque zu verwenden, wenn es in Ihrer Version von Python verfügbar ist. mit denen Objekte in ungefähr O (1) Zeit von jedem Ende eingefügt und entfernt werden können:

%Vor%

Beachten Sie auch, dass bei beiden Lösungen das ursprüngliche Sequenzobjekt geändert wird, während Sie bei Ihnen eine neue Liste erstellen und sie a zuweisen. Also wenn wir es taten:

%Vor%

Mit Ihrer Methode verweist c weiterhin auf die ursprüngliche, nicht gedrehte Liste und bezieht sich bei meinen Methoden auf die aktualisierte gedrehte list / deque.

    
Miles 31.07.2009, 11:28
quelle

Tags und Links