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]

24voto

Bahubali Patil Punkte 1019

pop

Nimmt den Index (wenn gegeben, sonst den letzten), entfernt den Wert bei diesem Index und gibt den Wert zurück

entfernen

Nimmt den Wert, entfernt das erste Vorkommen und gibt nichts zurück

löschen

Nimmt den Index, entfernt den Wert an diesem Index und gibt nichts zurück

3voto

phanindravarma Punkte 1177

Jede Operation/Funktion auf verschiedenen Datenstrukturen wird für bestimmte Aktionen definiert. In Ihrem Fall, d.h. dem Entfernen eines Elements, sind das Löschen, Pop und Entfernen. (Wenn Sie Mengen betrachten, fügen Sie eine weitere Operation hinzu - verwerfen) Ein anderer verwirrender Fall ist das Hinzufügen. Einfügen/Hinzufügen. Zur Veranschaulichung, lassen Sie uns deque implementieren. deque ist eine hybride lineare Datenstruktur, bei der Sie Elemente hinzufügen / entfernen können Elemente von beiden Enden (hinten und vorne).

class Deque(object):

  def __init__(self):

    self.items=[]

  def addFront(self,item):

    return self.items.insert(0,item)
  def addRear(self,item):

    return self.items.append(item)
  def deleteFront(self):

    return self.items.pop(0)
  def deleteRear(self):
    return self.items.pop()
  def returnAll(self):

    return self.items[:]

Hier können Sie die Vorgänge sehen:

def deleteFront(self):

    return self.items.pop(0)
def deleteRear(self):
    return self.items.pop()

Die Operationen müssen etwas zurückgeben. Also, pop - mit und ohne Index. Wenn ich den Wert nicht zurückgeben will: del self.items[0]

Löschen nach Wert, nicht nach Index:

  • entfernen:

    list_ez=[1,2,3,4,5,6,7,8]
    for i in list_ez:
        if i%2==0:
            list_ez.remove(i)
    print list_ez

Rückgabe [1,3,5,7]

Betrachten wir den Fall der Mengen.

set_ez=set_ez=set(range(10))

set_ez.remove(11)

# Gives Key Value Error. 
##KeyError: 11

set_ez.discard(11)

# Does Not return any errors.

3voto

Nitish Punkte 565

Hier finden Sie eine ausführliche Antwort.

del kann für jedes Klassenobjekt verwendet werden, während pop und remove an bestimmte Klassen gebunden sind.

Para del

Hier sind einige Beispiele

>>> a = 5
>>> b = "this is string"
>>> c = 1.432
>>> d = myClass()

>>> del c
>>> del a, b, d   # we can use comma separated objects

Wir können überschreiben __del__ Methode in vom Benutzer erstellten Klassen.

Spezifische Verwendungen mit Liste

>>> a = [1, 4, 2, 4, 12, 3, 0]
>>> del a[4]
>>> a
[1, 4, 2, 4, 3, 0]

>>> del a[1: 3]   # we can also use slicing for deleting range of indices
>>> a
[1, 4, 3, 0]

Para pop

pop nimmt den Index als Parameter und entfernt das Element mit diesem Index

Anders als del , pop gibt bei Aufruf des Listenobjekts den Wert an diesem Index zurück

>>> a = [1, 5, 3, 4, 7, 8]
>>> a.pop(3)  # Will return the value at index 3
4
>>> a
[1, 5, 3, 7, 8]

Para remove

remove nimmt den Parameterwert und entfernt ihn aus der Liste.

Wenn mehrere Werte vorhanden sind, wird das erste Vorkommen entfernt.

Note : ValueError wird ausgelöst, wenn der Wert nicht vorhanden ist

>>> a = [1, 5, 3, 4, 2, 7, 5]
>>> a.remove(5)  # removes first occurence of 5
>>> a
[1, 3, 4, 2, 7, 5]
>>> a.remove(5)
>>> a
[1, 3, 4, 2, 7]

Ich hoffe, diese Antwort ist hilfreich.

2voto

Kushan Gunasekera Punkte 3807

En entfernen Operation auf einer Liste wird ein zu entfernender Wert angegeben. Sie durchsucht die Liste nach einem Element mit diesem Wert und löscht das erste übereinstimmende Element, das sie findet. Es ist ein Fehler, wenn es kein passendes Element gibt, und löst eine WertFehler .

>>> x = [1, 0, 0, 0, 3, 4, 5]
>>> x.remove(4)
>>> x
[1, 0, 0, 0, 3, 5]
>>> del x[7]
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    del x[7]
IndexError: list assignment index out of range

En del Anweisung kann zum Löschen einer ganzen Liste verwendet werden. Wenn Sie ein bestimmtes Listenelement als Argument für del angeben (z. B. listname[7], um speziell auf das 8. Element in der Liste zu verweisen), wird nur dieses Element gelöscht. Es ist sogar möglich, ein "Slice" aus einer Liste zu löschen. Es ist ein Fehler, wenn der Index außerhalb des Bereichs liegt, und löst eine IndexFehler .

>>> x = [1, 2, 3, 4]
>>> del x[3]
>>> x
[1, 2, 3]
>>> del x[4]
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    del x[4]
IndexError: list assignment index out of range

Die übliche Verwendung von pop ist es, das letzte Element aus einer Liste zu löschen, da Sie die Liste als Stapel verwenden. Im Gegensatz zu del gibt pop den Wert zurück, den es aus der Liste entfernt hat. Sie können optional einen Indexwert für pop und pop von einem anderen als dem Ende der Liste angeben (z. B. listname.pop(0) löscht das erste Element aus der Liste und gibt dieses erste Element als Ergebnis zurück). Sie können dies verwenden, damit sich die Liste wie eine Warteschlange verhält, aber es gibt Bibliotheksroutinen, die Warteschlangenoperationen mit besserer Leistung als pop(0) bieten können. Es ist ein Fehler, wenn der Index außerhalb des Bereichs liegt, und löst eine IndexFehler .

>>> x = [1, 2, 3] 
>>> x.pop(2) 
3 
>>> x 
[1, 2]
>>> x.pop(4)
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    x.pop(4)
IndexError: pop index out of range

Siehe collections.deque für weitere Einzelheiten.

2voto

Harshal SG Punkte 325

Remove arbeitet grundsätzlich mit dem Wert . Löschen und Pop arbeiten mit dem Index

Mit Remove wird grundsätzlich der erste übereinstimmende Wert entfernt. Delete löscht das Element aus einem bestimmten Index Pop nimmt grundsätzlich einen Index und gibt den Wert an diesem Index zurück. Wenn Sie die Liste das nächste Mal drucken, erscheint der Wert nicht mehr.

Example:

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