Seite 1 von 1

einfacher Befehl, um Liste zu leeren

Verfasst: Donnerstag 4. Juni 2009, 14:24
von Caldar
Gibt es einen Befehl, um eine vorher erzeugte Liste, welche unterschiedlich viele Elemente enthalten kann (evtl. auch keines), einfach zu leeren, also alle Werte zu entfernen?

Verfasst: Donnerstag 4. Juni 2009, 14:43
von DasIch

Code: Alles auswählen

while l:
    l.pop()
Was anderes gibts nicht.

Verfasst: Donnerstag 4. Juni 2009, 14:47
von Caldar
Ich beantworte es mal selbst, wie ich es bisher eherunsportlich gemacht habe:

einfach die Liste neu deklarieren!?

also wenn ich vorher eine

liste = []

erstellt habe und dann mit Werten gefüllt habe,
kann ich ja später einfach durch erneutes AUfrufen von
liste = []
diese vorherigen Werte löschen. Stimmt das so?

Verfasst: Donnerstag 4. Juni 2009, 14:48
von EyDu
DasIch hat geschrieben:Was anderes gibts nicht.
Das halte ich für ein Gerücht ;-)

Code: Alles auswählen

>>> x = [1,2,3,4,5]
>>> del x[:]
>>> x
[]
Oder wenn möglich: einfach eine neue Liste.

Verfasst: Donnerstag 4. Juni 2009, 14:53
von EyDu
Caldar hat geschrieben:also wenn ich vorher eine

liste = []

erstellt habe und dann mit Werten gefüllt habe,
kann ich ja später einfach durch erneutes AUfrufen von
liste = []
diese vorherigen Werte löschen. Stimmt das so?
Das ist kein echtes Löschen, da du damit eine neue Liste erzeugst und diese an den selben Namen bindest. In den meisten Fällen reicht eine neue Zuweisung aus.

Mal als Beispiel:

Verschiedene Listen:

Code: Alles auswählen

>>> a = [1,2,3]
>>> b = a
>>> a = []
>>> a
[]
>>> b
[1, 2, 3]
Die selbe Liste:

Code: Alles auswählen

>>> a = [1,2,3]
>>> b = a
>>> del a[:]
>>> a
[]
>>> b
[]
>>>

Verfasst: Donnerstag 4. Juni 2009, 14:59
von BlackJack
@Caldar: Eine neue Liste an den Namen zu binden ist nicht unsportlich, sondern die übliche Vorgehensweise, würde ich sagen. Da sagt man aber nicht "deklarieren" zu.

Verfasst: Donnerstag 4. Juni 2009, 15:00
von numerix
DasIch hat geschrieben:Was anderes gibts nicht.

Code: Alles auswählen

>>> liste = range(10)
>>> liste[:] = []
>>> liste
[]

Verfasst: Donnerstag 4. Juni 2009, 21:07
von jonas
Ist das auch ok?

Code: Alles auswählen

>>> liste = [1,2,3]
>>> liste
[1, 2, 3]
>>> liste = liste[:0]
>>> liste
[]
MfG Jonas

Verfasst: Donnerstag 4. Juni 2009, 21:27
von birkenfeld
Das ist, grob gesagt, Unsinn.

Verfasst: Donnerstag 4. Juni 2009, 21:32
von Dill
numerix hat geschrieben:

Code: Alles auswählen

>>> liste = range(10)
>>> liste[:] = []
>>> liste
[]

warum nicht einfach

Code: Alles auswählen

liste = []
:?:

Verfasst: Donnerstag 4. Juni 2009, 21:35
von birkenfeld
Dill hat geschrieben: warum nicht einfach

Code: Alles auswählen

liste = []
Die Semantik von ``liste = []`` und ``liste[:] = []`` (was äquivalent ist zu ``del liste[:]``) ist unterschiedlich. Kleiner Happen zum Verständnis:

Code: Alles auswählen

>>> x = y = [1,2,3]
>>> x = []
>>> y
[1,2,3]
>>> x = y = [1,2,3]
>>> del x[:]
>>> y
[]

Verfasst: Donnerstag 4. Juni 2009, 23:03
von Dill
danke, aber das ist mir jetzt ein bisschen unheimlich :shock:

Verfasst: Donnerstag 4. Juni 2009, 23:13
von cofi
Ganz einfach: Bei deinem Vorschlag bindest du nur den Namen neu, änderst aber nicht das Objekt, d.h. es kann andere Referenzen geben, die eben noch die komplette Liste haben.

Verfasst: Freitag 5. Juni 2009, 12:48
von Dill
ja auf den zweiten blick ist es nichtmehr so magisch, sondern macht sinn.
habe jetzt keine angst mehr 8)