Seite 1 von 1

list comprehension möglich?

Verfasst: Donnerstag 24. Januar 2008, 07:46
von kiiu
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)

Re: list comprehension möglich?

Verfasst: Donnerstag 24. Januar 2008, 08:55
von gerold
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.

Verfasst: Donnerstag 24. Januar 2008, 08:56
von mkesper
Ich stelle mir eine andere Frage: Willst du vielleicht eher ein Set haben als eine Liste?

Re: list comprehension möglich?

Verfasst: Donnerstag 24. Januar 2008, 08:57
von keppla
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))

Verfasst: Donnerstag 24. Januar 2008, 09:55
von kiiu
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! :>

Verfasst: Donnerstag 24. Januar 2008, 10:07
von mkesper
haben doch glatt drei Leute fast gleichzeitig geantwortet! ;)