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]

0voto

skashyap Punkte 137

Während pop und delete beide Indizes benötigen, um ein Element zu entfernen, wie in den obigen Kommentaren angegeben. Ein entscheidender Unterschied ist die Zeitkomplexität für sie. Die Zeitkomplexität für pop() ohne Index ist O(1), aber das ist nicht der Fall für das Löschen des letzten Elements.

Wenn in Ihrem Anwendungsfall immer das letzte Element gelöscht werden soll, ist es immer besser, pop() statt delete() zu verwenden. Weitere Erklärungen zur Zeitkomplexität finden Sie unter https://www.ics.uci.edu/~pattis/ICS-33/vorlesungen/komplexitypython.txt

0voto

Fellipe Sanches Punkte 5679

Remove(), del und pop() sind langsam... Was ist mit 'None'?

Inmitten der vielen Antworten habe ich niemanden gesehen, der über Leistung gesprochen hat. Deshalb habe ich einen Tipp zur Leistung:

remove(), del und pop() verschieben nach der Löschung alle verbleibenden Werte nach links...

1, 2, 3, 4, 5, 6
remove(3)
1, 2, <- 4, 5, 6

...und macht die Verarbeitung langsam!

Das Ändern des gewünschten Wertes in einen Nullwert für die weitere Verarbeitung von Löschungen kann Ihr Programm erheblich beschleunigen, insbesondere wenn Sie mit großen Datenmengen arbeiten:

my_array[2] = None

Natürlich ist das Setzen eines Nullwerts etwas anderes als das Löschen, aber wenn man etwas mehr über das Löschen verstehen will, scheint mir auch die Leistung dieses Vorgangs interessant.

0voto

Ash Nazg Punkte 385

Unterschied zwischen del, pop und remove in Bezug auf die Ausführungsgeschwindigkeit:

Während des Entfernens eines Zwischenprodukts:

import timeit
print(timeit.timeit("a=[1,2,3,4,5]\ndel a[3]",number=100000))
print(timeit.timeit("a=[1,2,3,4,5]\na.pop(3)",number=100000))
print(timeit.timeit("a=[1,2,3,4,5]\na.remove(3)",number=100000))

del gegen pop gegen remove :

0.019387657986953855
0.02506213402375579
0.033232167130336165

del() scheint deutlich schneller zu sein als die beiden anderen, während remove() am langsamsten ist.

Beim Entfernen des letzten Elements:

print(timeit.timeit("a=[1,2,3,4,5]\ndel a[-1]",number=100000))
print(timeit.timeit("a=[1,2,3,4,5]\na.pop()",number=100000))
print(timeit.timeit("a=[1,2,3,4,5]\na.remove(5)",number=100000))

del gegen pop gegen remove :

0.01974551402963698
0.020333584863692522
0.03434014297090471

del() und pop() brauchen ähnlich lange, um das letzte Element zu entfernen.

-5voto

max runia Punkte 55

Sie können auch remove verwenden, um einen Wert nach Index zu entfernen.

n = [1, 3, 5]

n.remove(n[1])

n würde sich dann auf [1, 5] beziehen

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