Seite 1 von 1
bedingte Zuweisung
Verfasst: Donnerstag 27. September 2012, 17:15
von theotter
Gibt es in Python die Möglichkeit ohne if/else, einer Variable, anhand eines boolesches Wertes, einen Wert zuzuweisen?
Ich dachte an den Java-Operator : condition ? value1 : value2 und glaube, das auch iwo mal gelesen zu haben, aber leider finde ich es nicht mehr.
Re: bedingte Zuweisung
Verfasst: Donnerstag 27. September 2012, 17:21
von sparrow
Re: bedingte Zuweisung
Verfasst: Donnerstag 27. September 2012, 17:39
von Hyperion
@sparrow:
Dann ist ``a`` "eins"?

Re: bedingte Zuweisung
Verfasst: Freitag 28. September 2012, 07:49
von JonasR
Wie wäre es damit?

Geht wahlweise auch mit nem dict
Re: bedingte Zuweisung
Verfasst: Freitag 28. September 2012, 08:01
von sparrow
@Hyperion: Dir fehlt die gesunde Bergluft
@JonasR: Das ist zumindest keine bedingte Zuweisung.
Edit: Naja, wobei... ok ja. Meine Güte.
Re: bedingte Zuweisung
Verfasst: Freitag 28. September 2012, 11:10
von pillmuncher
Dank short-circuiting geht auch:
Re: bedingte Zuweisung
Verfasst: Freitag 28. September 2012, 11:21
von EyDu
pillmuncher hat geschrieben:Dank short-circuiting geht auch.
Was natürlich fürchterlich schiefgehen kann, wenn links die Bedingung wahr ist, aber der Wert in der Mitte zu False evaluiert wird:
Re: bedingte Zuweisung
Verfasst: Freitag 28. September 2012, 13:22
von snafu
theotter hat geschrieben:Gibt es in Python die Möglichkeit ohne if/else, einer Variable, anhand eines boolesches Wertes, einen Wert zuzuweisen?
Ich dachte an den Java-Operator : condition ? value1 : value2 und glaube, das auch iwo mal gelesen zu haben, aber leider finde ich es nicht mehr.
Also das, was "sparrow" schon am Anfang erwähnt hatte.
Ich wollte das nur nochmal ansprechen, weil soviele andere "Vorschläge" kamen.
Es gibt zwar - wie gezeigt wurde - auch andere Möglichkeiten, die bei passender Anwendung den gleichen Effekt haben, aber die sind alle kein direktes Pendant für den von dir angesprochenen Ausdruck. Nichtsdestotrotz können die manchmal sinnvoller (vor allem: kompakter) sein, als ein explizit ausgeschriebener bedingter Ausdruck. Ist situationsabhängig.
Re: bedingte Zuweisung
Verfasst: Freitag 28. September 2012, 21:54
von Hyperion
sparrow hat geschrieben:@Hyperion: Dir fehlt die gesunde Bergluft
Ich bin grad erkältet...

Re: bedingte Zuweisung
Verfasst: Sonntag 30. September 2012, 00:28
von theotter
Danke für die Antworten.
Schade, dass es nichts gibt, was syntaktisch dem von mir Beschriebenen entspricht, denn die von euch angesprochen Varianten sind nicht so intuitiv, wie die in Java, aber man kann damit leben

Re: bedingte Zuweisung
Verfasst: Sonntag 30. September 2012, 01:51
von BlackJack
@theotter: Der Ternäroperator in Java ist nicht intuitiv, sondern einfach das was Du kennst, und darum sieht anderes halt ”komisch” aus. Letztendlich dürfte Python's ``a if c else b`` für jemanden der nicht ”vorbelastet” ist, verständlicher sein als ``c ? a : b;``. Wenn das *intuitiv* wäre müsste da jemand der das nicht kennt drauf kommen können, oder zumindest wenn er es das erste mal sieht, erkennen was es tut.
Re: bedingte Zuweisung
Verfasst: Sonntag 30. September 2012, 10:18
von Leonidas
Und gerade wenn man statt ``c ? a : b`` dann ``c?a:b`` schreibt, siehts aus als hätte Java einen Fragezeichen-Operator und einen Doppelpunkt-Operator. Danach zu Googlen um rauszufinden was das ist, ist etwas nervig.
Und gerade bei der Syntax kann ich mir nie merken was jetzt der "wahr"-Zweig und was der "falsch"-Zweig ist
