Elemente einer Liste löschen

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
Kathrin
User
Beiträge: 43
Registriert: Dienstag 6. Dezember 2005, 15:11

Hallo!

Mein Problem ist eigentlich ganz einfach, ich möchte alle Elemente meiner Liste löschen. Ich versteh einfach nicht, warum es nicht so funktioniert, wie ich es versucht hab :x

Code: Alles auswählen

liste = [1, 2, 3, 4]

for item in liste:
    liste.pop()   #klappt nicht
    del liste[-1] #klappt auch nicht

print liste
--> [1, 2]
Kann mir jemand sagen, warum nicht alle Elemente gelöscht werden?

Danke,
Kathrin!
Benutzeravatar
Gunnar
User
Beiträge: 68
Registriert: Samstag 23. Oktober 2004, 08:59

Hi Kathrin,

z.B. mit :

Code: Alles auswählen

liste = [1,2,3,4]
del liste[:]
Das heisst lösche jeden Index von der Liste "liste"

oder :

Code: Alles auswählen

liste = [1,2,3,4]
liste = []
Dann hat man die Variable "liste" mit einer neuen, leeren Liste überschrieben.


Gruss,
Gunnar
Kathrin
User
Beiträge: 43
Registriert: Dienstag 6. Dezember 2005, 15:11

Hey, danke für die schnelle Antwort!

Es klappt, jippi :D
Du kannst mir aber nicht zufällig sagen, warum's auf meine Art nicht funktionert hat, oder?!
Benutzeravatar
Gunnar
User
Beiträge: 68
Registriert: Samstag 23. Oktober 2004, 08:59

Ja Kathrin,

den Fehler habe ich letzt auch gemacht und dazu sagte modelnine :
Iterieren über ein Objekt was verändert wird hat meißtens nicht die gewünschten Konsequenzen (bei Listen werden dann eine entsprechende Anzahl von Elementen übersprungen, bei Dicts bricht das Programm mit einer Exception ab).
Bei dir wurde der Schleifeninhalt nur zweimal ausgeführt, weil der Liste die items unter'm Hintern weggerissen wurden :wink:

Gruss,
Gunnar
Kathrin
User
Beiträge: 43
Registriert: Dienstag 6. Dezember 2005, 15:11

Ja, sowas hab ich mir schon gedacht ...

Also danke nochmal ... hast mir echt geholfen! :D
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Brauchst Du umbedingt das selbe Listenobjekt?

Wenn nein, dann geht's einfacher und schneller mittels:

Code: Alles auswählen

liste = []
--- Heiko.
Kathrin
User
Beiträge: 43
Registriert: Dienstag 6. Dezember 2005, 15:11

Also erst hab ich gedacht, dass ich das selbe brauche, darum konnte ich's nicht mit

Code: Alles auswählen

liste = []
machen.
Hab aber jetzt so umgeschrieben, dass ich nicht unbedingt das selbe Listenobjekt brauche.

Aber danke für den Tipp!
Antworten