einfacher Befehl, um Liste zu leeren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Caldar
User
Beiträge: 46
Registriert: Sonntag 17. Mai 2009, 18:20

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?
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Code: Alles auswählen

while l:
    l.pop()
Was anderes gibts nicht.
Caldar
User
Beiträge: 46
Registriert: Sonntag 17. Mai 2009, 18:20

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?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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.
Das Leben ist wie ein Tennisball.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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
[]
>>>
Das Leben ist wie ein Tennisball.
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.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

DasIch hat geschrieben:Was anderes gibts nicht.

Code: Alles auswählen

>>> liste = range(10)
>>> liste[:] = []
>>> liste
[]
Benutzeravatar
jonas
User
Beiträge: 156
Registriert: Dienstag 9. September 2008, 21:03

Ist das auch ok?

Code: Alles auswählen

>>> liste = [1,2,3]
>>> liste
[1, 2, 3]
>>> liste = liste[:0]
>>> liste
[]
MfG Jonas
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Das ist, grob gesagt, Unsinn.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

numerix hat geschrieben:

Code: Alles auswählen

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

warum nicht einfach

Code: Alles auswählen

liste = []
:?:
http://www.kinderpornos.info
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

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
[]
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

danke, aber das ist mir jetzt ein bisschen unheimlich :shock:
http://www.kinderpornos.info
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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.
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

ja auf den zweiten blick ist es nichtmehr so magisch, sondern macht sinn.
habe jetzt keine angst mehr 8)
http://www.kinderpornos.info
Antworten