Was ist der beste Weg, um einen Startindex festzulegen, wenn eine Liste in Python iteriert wird? Zum Beispiel habe ich eine Liste der Wochentage - Sonntag, Montag, Dienstag, ... Samstag -, aber ich möchte die Liste ab Montag durchlaufen. Was ist die beste Vorgehensweise dafür?
87
Antworten:
Sie können das Schneiden verwenden :
Dies beginnt beim dritten Element und wird bis zum Ende wiederholt.
quelle
islice
, wie in John La Rooys Antwort vorgeschlagen.islice
hat den Vorteil, dass kein Teil der Liste kopiert werden mussquelle
Sie können immer eine Schleife mit einem Indexzähler der herkömmlichen Schleife im C-Stil ausführen:
Es ist immer besser, dem Stil "Schleife für jedes Element" zu folgen, da dies normal ist. Wenn dies jedoch im Weg steht, denken Sie daran, dass der herkömmliche Stil immer unterstützt wird.
quelle
stdlib wird dich anschließen, mein Sohn!
deque.rotate()
::quelle
Wenn Sie nur von nun an drucken möchten
Monday
, können Sie mithilfelist
derindex
Methode die Position ermitteln, an der sich "Montag" in der Liste befindet, und von dort aus iterieren, wie in anderen Beiträgen erläutert. Durch die Verwendung vonlist.index
spart Sie den Index für "Montag" fest, was eine potenzielle Fehlerquelle darstellt:quelle
Hier ist ein Rotationsgenerator, der keine verzerrte Kopie der Eingabesequenz erstellen muss ... kann nützlich sein, wenn die Eingabesequenz viel größer als 7 Elemente ist.
quelle
Wenn Sie die Liste "umwickeln" und effektiv drehen möchten, um mit Montag zu beginnen (anstatt nur die Elemente vor Montag abzuschneiden):
quelle
Warum verwenden Benutzer das Schneiden von Listen (langsam, weil es in eine neue Liste kopiert), importieren eine Bibliotheksfunktion oder versuchen, ein Array dafür zu drehen?
Verwenden Sie eine normale for-Schleife mit
range(start, stop, step)
(wobeistart
undstep
optionale Argumente sind).Beispiel: Durchlaufen eines Arrays ab Index 1:
quelle