Gibt es einen Grund, etwas Komplizierteres als eine dieser beiden Zeilen zu tun, wenn Sie eine Liste in Python löschen möchten?
old_list = []
old_list = list()
Der Grund, den ich frage, ist, dass ich dies gerade in einem laufenden Code gesehen habe:
del old_list[ 0:len(old_list) ]
a[:x]
bedeutet Anfang zu x unda[x:]
bedeutet x zu Ende.a[ 0:len(a) ]
kann geschrieben werden alsa[:]
. Sie können auch Negative verwenden, um vom Ende an zu zählen (a[-1]
ist das letzte Element).Antworten:
Das Löschen einer Liste wirkt sich auf alle anderen Referenzen derselben Liste aus.
Diese Methode wirkt sich beispielsweise nicht auf andere Referenzen aus:
Aber dieser tut:
Sie könnten auch tun:
quelle
del a[:]
a
? Ich dachtea
und bezog michb
auf dasselbe Objekt ... Ich möchte nur wissen warum. Vielen Dank.a.clear()
problemlos loslegen!Wenn Sie
alist = []
dies tun , wird die Liste nicht gelöscht , sondern nur eine leere Liste erstellt und an die Variable gebundenalist
. Die alte Liste bleibt bestehen, wenn andere Variablenbindungen vorhanden sind.Um tatsächlich eine Liste löscht an Ort und Stelle , können Sie eine der folgenden Arten verwendet werden :
alist.clear() # Python 3.3+, most obvious
del alist[:]
alist[:] = []
alist *= 0 # fastest
Siehe die Veränderliche Sequenztyp Dokumentation für weitere Details.
quelle
Es gibt eine sehr einfache Möglichkeit, eine Python-Liste zu löschen. Verwenden Sie del list_name [:] .
Beispielsweise:
quelle
Es scheint mir, dass del Ihnen den Speicher zurückgibt, während das Zuweisen einer neuen Liste dazu führt, dass die alte nur gelöscht wird, wenn der gc ausgeführt wird.Dies kann für große Listen nützlich sein, für kleine Listen sollte es jedoch vernachlässigbar sein.
Edit : Als Algorias spielt es keine Rolle.
Beachten Sie, dass
ist äquivalent zu
quelle
Löscht die Werte dieser Listenvariablen
Löscht die Variable selbst aus dem Speicher
quelle
Es gibt zwei Fälle, in denen Sie eine Liste löschen möchten:
old_list
in Ihrem Code weiter verwenden.In Fall 1 fahren Sie einfach mit der Aufgabe fort:
In Fall 2 würde die
del
Anweisung den Referenzzähler auf das Listenobjekt reduzieren, auf das der Nameold list
zeigt. Wenn das Listenobjekt nur mit dem Namenold_list
auf angezeigt wird, wäre der Referenzzähler 0 und das Objekt würde für die Speicherbereinigung freigegeben.quelle
Wenn Sie die Liste löschen, brauchen Sie die Liste offensichtlich nicht mehr. In diesem Fall können Sie einfach die gesamte Liste mit der einfachen Löschmethode löschen.
Falls Sie es erneut benötigen, können Sie es erneut initialisieren. Oder einfach nur seine Elemente durch löschen
quelle
Eine andere Lösung, die gut funktioniert, besteht darin, eine leere Liste als leere Referenzliste zu erstellen.
Zum Beispiel haben Sie eine Liste als
a_list = [1,2,3]
. Um es zu löschen, machen Sie einfach Folgendes:Dadurch wird
a_list
eine leere Liste wie die erstelltempt_list
.quelle