Seite 1 von 1

Liste löschen

Verfasst: Dienstag 28. März 2006, 20:33
von Bluecaspar
Ich möchte alle Einträge einer Liste löschen und darauf hin wieder neu Daten einspielen,

Code: Alles auswählen

x = [1,2,4]

for i in range(len(x)):
     del x[0]
Ist zwar so möglich, aber kennt jemand einen Befehl mit dem ich das auch einfach in einer Zeile hin bekomm?

Verfasst: Dienstag 28. März 2006, 20:36
von snakeseven
Gruss, Seven

Verfasst: Dienstag 28. März 2006, 20:40
von modelnine
Das letzte erstellt eine neue Liste.

Wenn Du die alte Liste behalten willst (weil Du zum Beispiel irgendwo anders eine Referenz auf diese hast) geht auch:

Code: Alles auswählen

del lst[:]

Verfasst: Dienstag 28. März 2006, 20:56
von Bluecaspar
Wenn ich die Liste neu einspiele, brauch ich die alten Daten nicht mehr. Beide Versionen erfüllen aber genauso was ich mir Wünsche, danke.

Verfasst: Mittwoch 29. März 2006, 12:58
von maxxle
Bin nur durch Zufall über den Thread gestolpert und wollte mal fragen, wo genau das Problem mit

x=[ ]

ist.

Verfasst: Mittwoch 29. März 2006, 13:21
von mitsuhiko
maxxle hat geschrieben:Bin nur durch Zufall über den Thread gestolpert und wollte mal fragen, wo genau das Problem mit

x=[ ]

ist.
Guckst du:

Code: Alles auswählen

>>> l = [1,2,3]
>>> clone = l
>>> clone
[1, 2, 3]
>>> l[:] = ["Hello"]
>>> clone
['Hello']
>>> l = ["blub"]
>>> clone
['Hello']
Und warum? Weil eine zuweisung ein neues objekt erstellt:
Davor:

Code: Alles auswählen

>>> id(l)
-1210503124
>>> id(clone)
-1210503124
Danach:

Code: Alles auswählen

>>> id(l)
-1210503124
>>> id(clone)
-1210519572

Verfasst: Mittwoch 29. März 2006, 17:43
von maxxle
Aha... muss man sich merken.


danke