Javaとは違った書き方だったのでメモ。
Pythonの言語仕様では 条件式
と呼ぶ
Pythonの三項演算子
変数
= 真の場合の代入値
if 条件文
else 偽の場合の代入値
Python
x = 10 if a > 0 else 20
aが0より大きい場合はxに10が代入される。
それ以外の場合はxに20が代入される。
見慣れない記述であるが、英文法に近い書き方。
先に結論(x=10)を書いて、その条件(if a > 0)、成立しなかった場合(else 20)を副詞的に追加する。
Javaの三項演算子
変数
= 条件式
? 真の場合の代入値
: 偽の場合の代入値
Java
x = (a > 0) ? 10 : 20
三項演算子をネストする
三項演算子で下記のような elif
に当たる書き方もできる。
Python
if a > 0:
x = 10
elif a == 0:
x = 20
else:
x = 30
変数
= 真の場合の代入値
if 条件文
else 偽の場合の代入値
if 条件文
else 偽の場合の代入値
Python
x = 10 if a > 0 else 20 if a == 0 else 30
一行で表すと読みづらい...
追記 @shiracamus さんのコメントを元に
括弧で囲って、改行を入れるといいですよ。
Python
x = (10 if a > 0 else
20 if a == 0 else
30)
また、以下のような書き方もできるとのこと。
x and y
や x or y
のような書き方を短絡評価というらしい
ちなみに、条件次第ですが、こんな書き方もできます。
Python
>>> a = 0
>>> a > 0 and 10 or a == 0 and 20 or 30
20
0や空文字などFalseとして判定される値は、最後の値にしないと意図しない結果になります。
以下のような書き方など
Python
>>> a = 0
>>> a > 0 and 10 or a == 0 and 0 or 30
30