Wie entferne ich das erste Element aus einer Liste?


773

Ich habe die Liste, in die [0, 1, 2, 3, 4]ich es schaffen möchte [1, 2, 3, 4]. Wie gehe ich vor?

Antworten:


1259

Python-Liste

list.pop (index)

>>> l = ['a', 'b', 'c', 'd']
>>> l.pop(0)
'a'
>>> l
['b', 'c', 'd']
>>> 

del list [index]

>>> l = ['a', 'b', 'c', 'd']
>>> del l[0]
>>> l
['b', 'c', 'd']
>>> 

Beide ändern Ihre ursprüngliche Liste.

Andere haben vorgeschlagen, das Schneiden zu verwenden:

  • Kopiert die Liste
  • Kann eine Teilmenge zurückgeben

Wenn Sie viele Pop (0) ausführen, sollten Sie sich auch collection.deque ansehen

from collections import deque
>>> l = deque(['a', 'b', 'c', 'd'])
>>> l.popleft()
'a'
>>> l
deque(['b', 'c', 'd'])
  • Bietet eine höhere Leistung am linken Ende der Liste

Sie können auch negative Indizes verwenden, die dieselbe Bedeutung haben wie Listen.
Gabriel Devillers

189

Schneiden:

x = [0,1,2,3,4]
x = x[1:]

Was tatsächlich eine Teilmenge des Originals zurückgeben würde, diese aber nicht ändern würde.


17
Wenn xes leer ist, x=x[1:]würde es leer lassen, ohne sich zu beschweren. x.pop(0)würde für eine leere Liste werfen x. Manchmal möchte man werfen: Wenn die Annahme, dass mindestens ein Element in der Liste enthalten ist, falsch ist, möchte man möglicherweise benachrichtigt werden.
Lesen Sie den

Danke dafür! Dies ist eine bessere Antwort, imo, weil es nicht destruktiv ist
Hee Jin


29

Weitere Informationen zum Aufteilen von Listen finden Sie im Python-Tutorial zu Listen :

>>> l = [0, 1, 2, 3, 4]
>>> l[1:]
[1, 2, 3, 4]

29

du würdest das einfach tun

l = [0, 1, 2, 3, 4]
l.pop(0)

oder l = l[1:]

Vor-und Nachteile

Mit pop können Sie den Wert abrufen

sagen x = l.pop(0) xwürde sein0


15

Dann löschen Sie es einfach:

x = [0, 1, 2, 3, 4]
del x[0]
print x
# [1, 2, 3, 4]

8

Sie können list.reverse()die Liste umkehren und dann list.pop()das letzte Element entfernen, zum Beispiel:

l = [0, 1, 2, 3, 4]
l.reverse()
print l
[4, 3, 2, 1, 0]


l.pop()
0
l.pop()
1
l.pop()
2
l.pop()
3
l.pop()
4

5

Sie verwenden können auch list.remove(a[0])auf popin der Liste aus dem ersten Element.

>>>> a=[1,2,3,4,5]
>>>> a.remove(a[0])
>>>> print a
>>>> [2,3,4,5]

3
OP fragt nicht nach dem besten Weg, dies zu tun. Dies ist nur ein weiterer Ansatz, um dasselbe zu erreichen!
Vertexion

1
Ja, ein anderer Ansatz, der gegenüber den anderen Antworten keinen Vorteil hat. Es gibt verschiedene Möglichkeiten, dies zu tun. Warum nicht eine Antwort von geben a.remove(a[1-1])? Das ist ein anderer Weg.
Ned Batchelder

2
Mein Punkt ist, dass Ihre Antwort schlechter ist als die anderen Antworten und nichts zu empfehlen hat. Es gibt keinen Grund, diese Antwort gegenüber den anderen zu verwenden. Nur weil es "ein anderer Weg" ist, ist dies kein Grund, es hier hinzuzufügen.
Ned Batchelder

4
@NedBatchelder Dein Punkt ist strittig. Es ist eine zusätzliche Methode, die für Listen in Python verfügbar ist, die für diese bestimmte Aufgabe spezifisch sind. Der Vollständigkeit halber sollte sie beachtet werden. Die erfundene BS ist ein [1-1] Beispiel, das ist es jedoch nicht. Ganz zu schweigen davon, dass seine Antwort in keiner Weise "schlechter als die anderen Antworten" ist.
Hejazzman

8
Ich stehe zu meiner Frage: Das scheint seltsam und erfunden und hat nichts zu empfehlen. Tatsächlich ist der erste Satz irreführend, da Sie das i-te Element nicht mit entfernen können list.remove(a[i]). Bei doppelten Werten wird möglicherweise ein früheres Element mit demselben Wert gefunden und dieses anstelle des i-ten entfernt.
Ned Batchelder

4

Wenn Sie arbeiten , numpy müssen Sie verwenden Löschmethode:

import numpy as np

a = np.array([1, 2, 3, 4, 5])

a = np.delete(a, 0)

print(a) # [2 3 4 5]

1

Es gibt eine Datenstruktur namens "deque" oder "Double Ended Queue", die schneller und effizienter als eine Liste ist. Sie können Ihre Liste verwenden und in deque konvertieren und die erforderlichen Transformationen darin durchführen. Sie können die Deque auch wieder in eine Liste konvertieren.

import collections
mylist = [0, 1, 2, 3, 4]

#make a deque from your list
de = collections.deque(mylist)

#you can remove from a deque from either left side or right side
de.popleft()
print(de)

#you can covert the deque back to list
mylist = list(de)
print(mylist)

Deque bietet auch sehr nützliche Funktionen wie das Einfügen von Elementen auf beiden Seiten der Liste oder in einen bestimmten Index. Sie können eine Deque auch drehen oder umkehren. Versuche es!!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.