1206 Stimmen

Unterschied zwischen Löschen, Entfernen und Pop auf Listen

Gibt es einen Unterschied zwischen diesen drei Methoden zum Entfernen eines Elements aus einer Liste?

>>> a = [1, 2, 3]
>>> a.remove(2)
>>> a
[1, 3]

>>> a = [1, 2, 3]
>>> del a[1]
>>> a
[1, 3]

>>> a = [1, 2, 3]
>>> a.pop(1)
2
>>> a
[1, 3]

1685voto

Martijn Pieters Punkte 953257

Die Auswirkungen der drei verschiedenen Methoden zum Entfernen eines Elements aus einer Liste:

remove beseitigt die erste passend zu Wert und nicht einen bestimmten Index:

>>> a = [0, 2, 3, 2]
>>> a.remove(2)
>>> a
[0, 3, 2]

del entfernt das Element an einem bestimmten Index:

>>> a = [9, 8, 7, 6]
>>> del a[1]
>>> a
[9, 7, 6]

y pop entfernt das Element an einem bestimmten Index und gibt es zurück.

>>> a = [4, 3, 5]
>>> a.pop(1)
3
>>> a
[4, 5]

Auch ihre Fehlermodi sind unterschiedlich:

>>> a = [4, 5, 6]
>>> a.remove(7)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
>>> del a[7]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range
>>> a.pop(7)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: pop index out of range

281voto

Sven Marnach Punkte 525472

使用する del um ein Element nach Index zu entfernen, pop() um ihn nach Index zu entfernen, wenn Sie den zurückgegebenen Wert benötigen, und remove() um ein Element nach Wert zu löschen. Die letzte Methode erfordert das Durchsuchen der Liste und führt zu ValueError wenn kein solcher Wert in der Liste vorkommt.

Beim Löschen des Index i aus einer Liste von n Elemente sind die Rechenkomplexitäten dieser Methoden

del     O(n - i)
pop     O(n - i)
remove  O(n)

135voto

Chris_Rands Punkte 34669

Da es noch niemand erwähnt hat, sei darauf hingewiesen, dass del (im Gegensatz zu pop ) ermöglicht das Entfernen eines Bereichs von Indizes aufgrund von Listenslicing:

>>> lst = [3, 2, 2, 1]
>>> del lst[1:]
>>> lst
[3]

Dies ermöglicht auch die Vermeidung einer IndexError wenn der Index nicht in der Liste enthalten ist:

>>> lst = [3, 2, 2, 1]
>>> del lst[10:]
>>> lst
[3, 2, 2, 1]

71voto

Saurav Sahu Punkte 11267

Diese Frage wurde von anderen bereits recht gut beantwortet. Dies hier von meiner Seite :)

remove vs pop vs del

Offensichtlich, pop ist die einzige, die den Wert zurückgibt, und remove ist die einzige, die das Objekt durchsucht, während del beschränkt sich auf eine einfache Löschung.

32voto

Mayur Patil Punkte 902

Viele gute Erklärungen sind hier zu finden, aber ich werde mein Bestes tun, um mehr zu vereinfachen.

Unter all diesen Methoden, remove & pop sind Postfix während das Löschen Präfix .

remove() : Wird verwendet, um das erste Vorkommen eines Elements zu entfernen.
remove(n) => erstes Auftreten von n in der Liste.

>>> a = [0, 2, 3, 2, 1, 4, 6, 5, 7]
>>> a.remove(2)   # where i = 2
>>> a
[0, 3, 2, 1, 4, 6, 5, 7]

pop() : Wird verwendet, um das Element ...

  • wenn kein Index angegeben ist:
    pop() => vom Ende der Liste

    a.pop() a [0, 3, 2, 1, 4, 6, 5]

  • wenn ein Index angegeben ist:
    pop(index) => von Index

    a.pop(2) a [0, 3, 1, 4, 6, 5]

WARNUNG: Gefährliche Methode im Voraus

del() : Es ist eine Präfix-Methode.

Achten Sie auf zwei unterschiedliche Syntaxen für dieselbe Methode: mit [] und ohne. Sie besitzt die Macht zu:

  • Index löschen
    del a[index] => zum Löschen nach Index und zugehörigem Wert genau wie pop .

    del a[1] a [0, 1, 4, 6, 5]

  • Werte im Bereich löschen [index_1:index_N] :
    del a[0:3] => mehrere Werte im Bereich.

    del a[0:3] a [6, 5]

  • Zu guter Letzt können Sie die gesamte Liste auf einen Schlag löschen.
    del (a) => wie oben gesagt.

    del (a) a Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'a' is not defined

Ich hoffe, damit ist die Verwirrung geklärt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X