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]
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
使用する 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)
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]
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]
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 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.