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