Der effizienteste Weg, um entfernen der ersten N Elemente in eine Liste?
Brauche ich zum entfernen der ersten n Elemente aus einer Liste von Objekten in Python 2.7. Gibt es eine einfache Möglichkeit, ohne die Verwendung von Schleifen?
x.pop(5)
,del x[5]
oderx.remove("cow")
. Die beiden ersten entfernt, die durch den index und die später entfernt von Suchkriterien. Die zweite kombiniert werden können tundel x[2:5]
die delites Indizes 2-5- warum die 5? wenn ich zum Beispiel [a,b,c,d,e,f,g,..., z] und wollen nur [f,g...z]?
- Dann würden Sie wollen, zu tun
pos = x.index("f"); end = x.index("z"); del x[pos:end]
Sie hätten zu berücksichtigen, dassz
existieren könnten, bevorf
und verwendenpos
als Ausgangspunkt poiint bei der Suche nachz
etc, aber Sie bekommen die Idee. - vielleicht möchten Sie eine Liste[n:]
InformationsquelleAutor RedVelvet | 2015-11-10
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die Liste aufschneiden zu archivieren Ziel:
Ausgänge:
Oder
del
wenn Sie nur wollen, verwenden Sie eine Liste:Ausgänge:
Python-Listen wurden nicht gemacht, um den Betrieb auf den Anfang der Liste und sind sehr unwirksam in diesem Vorgang.
Während Sie schreiben können
Es ist sehr ineffizient.
Wenn Sie nur wollen, löschen Sie Elemente aus Ihrer Liste, Sie können dies tun, mit
del
:Ist die auch wirklich sehr schnell:
Wenn Sie zu erhalten müssen die Elemente vom Anfang der Liste, sollten Sie
Sammlungen.deque
von Raymond Hettinger und seinepopleft()
Methode.Vergleich:
Liste + pop(0)
deque + popleft()
pop
effizient sein, wennlist
array gesichert? wiki.python.org/moin/TimeComplexityDies ist der code, wenn Sie möchten, um eine Nummer zu löschen von Elementen aus der Liste. Sie könnte genauso gut überspringen Sie die null vor dem Doppelpunkt. Es hat gar nicht so wichtig. Diese könnte nicht so gut.
Versuchen, diesen code ausführen: