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]
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]
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
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.
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.
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.
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.
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.