8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Python 三項演算子の書き方

Last updated at Posted at 2018-10-15

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 yx 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
8
8
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?