list comprehension möglich?

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
kiiu
User
Beiträge: 9
Registriert: Donnerstag 24. August 2006, 09:31

Donnerstag 24. Januar 2008, 07:46

hallo,
habe mich soeben gefragt ob folgende for-schleife auch als list comprehension möglich wäre

Code: Alles auswählen

newList = []
for element in oldList:
    if element not in newList:
        newList.append(element)
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Donnerstag 24. Januar 2008, 08:55

Hallo kiiu!

Ich glaube nicht, da die neue Liste beim Testen ja noch nicht existiert. Aber dein Problem würde ich persönlich anders angehen:

Code: Alles auswählen

>>> old_list = ["a", "b", "a", "c", "a"]
>>> new_list = list(set(old_list))
>>> new_list
['a', 'c', 'b']
>>> 
mfg
Gerold
:-)

PS: Das hätte ich fast vergessen: Ein "Set" behält die Reihenfolge der Einträge NICHT. Also wenn dir die Reihenfolge wichtig ist, dann darfst du natürlich nicht mit ``set()`` arbeiten.
Zuletzt geändert von gerold am Donnerstag 24. Januar 2008, 10:19, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Donnerstag 24. Januar 2008, 08:56

Ich stelle mir eine andere Frage: Willst du vielleicht eher ein Set haben als eine Liste?
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

Donnerstag 24. Januar 2008, 08:57

kiiu hat geschrieben:hallo,
habe mich soeben gefragt ob folgende for-schleife auch als list comprehension möglich wäre

Code: Alles auswählen

newList = []
for element in oldList:
    if element not in newList:
        newList.append(element)
Wenn ich das richtig verstehe, machst du dir damit eine Liste, die keine doppelten Einträge hat. Sofern dich die Reihenfolge nicht interessiert:

Code: Alles auswählen

newList = list(set(oldList))
kiiu
User
Beiträge: 9
Registriert: Donnerstag 24. August 2006, 09:31

Donnerstag 24. Januar 2008, 09:55

Cool, danke für Eure Antworten! ;)
Das werde ich noch gebrauchen können.

@mkallas
Ich habe mir generell die Frage gestellt, weil ich die beschriebene Schleife in einem Skript gesehen hatte.
Aber wie angedeutet: diese mir bisher unbekannten set-types werde ich in Zukunft mit Sicherheit benutzen.
In sofern nochmals danke! :>
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Donnerstag 24. Januar 2008, 10:07

haben doch glatt drei Leute fast gleichzeitig geantwortet! ;)
Antworten