Wahrheitswerte in Python

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
PmanX
User
Beiträge: 123
Registriert: Donnerstag 25. Januar 2007, 13:50
Wohnort: Germany.BB.LOS
Kontaktdaten:

Habe ich oder Python Probleme mit Wahrheitswerten ? ;)

Code: Alles auswählen

x1 = [x for x in raw_input('Eingabe: ') if not x]
>>> x1
[]

Hier funktioniert ein nachgestellte if und Space ist True.

Code: Alles auswählen

x1 = 'Wert' if not x1
Hier nicht.
Benutzeravatar
sunmountain
User
Beiträge: 89
Registriert: Montag 13. März 2006, 17:18

PmanX hat geschrieben:

Code: Alles auswählen

x1 = 'Wert' if not x1
Ich glaube nicht dass das ein gültiger Konstrukt ist.
Meinst Du sowas

Code: Alles auswählen

x1 = 'Wert' if not x1 else None
?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

PmanX hat geschrieben:Habe ich oder Python Probleme mit Wahrheitswerten ? ;)

Code: Alles auswählen

x1 = [x for x in raw_input('Eingabe: ') if not x]
>>> x1
[]
Ich denk eher du hast ein Verständnisproblem. Die LC iteriert über den Rückgabewert von ``raw_input()``, und da dort nichts eingegeben wird, kommt keine einzige Iteration zu stande, daher wird kein einziges Objekt in die Liste eingefügt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
PmanX
User
Beiträge: 123
Registriert: Donnerstag 25. Januar 2007, 13:50
Wohnort: Germany.BB.LOS
Kontaktdaten:

Ich denk eher du hast ein Verständnisproblem. Die LC iteriert über den Rückgabewert von ``raw_input()``, und da dort nichts eingegeben wird, kommt keine einzige Iteration zu stande, daher wird kein einziges Objekt in die Liste eingefügt.
Sorry , habe die Eingabezeile unterschlagen.

Code: Alles auswählen

>>> x1 = [x for x in raw_input('Eingabe: ') if not x]
Eingabe: ewfekv,dcc23244fsdfcsa,   dvcdvd
>>> x1
[]
Allerdings unterlag ich einem Irrtum. Ein Leerzeichen ist kein Leerstring. Damit passt dieses Beispiel nicht.

sunmountain: Eben. Das ist mein Problem. Bei List Comprehensions ist es gültig, so aber nicht.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

PmanX hat geschrieben: sunmountain: Eben. Das ist mein Problem. Bei List Comprehensions ist es gültig, so aber nicht.
Das ist kein Problem. Die if-Teilausdrücke sind Bestandteile der Syntax für List Comprehensions und kein generelles Syntaxelement.

Die "x if y else z"-Ausdrücke sind dagegen ab Python 2.5 überall möglich, haben aber eine andere Semantik als die if-Ausdrücke in LCs.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Antworten