LoginSignup
13

More than 5 years have passed since last update.

三項演算子は単純なif-else文を1行でまとめてくれて、読みやすくしてくれます。

if-else文

例えば、vが10より大きいときの値でfoo、それ以外はbarと表示させたいとき、if-else文で書くと4行で書きます。

if-else文で書くと4行
In [22]: for v in range(-5, 15):   
    ...:     if v > 10:               
    ...:         p = 'foo'            
    ...:     else:                    
    ...:         p = 'bar'            
    ...:     print(v, p)              
    ...:                              
-5 bar                                
-4 bar                                
-3 bar                                
-2 bar                                
-1 bar                                
0 bar                                 
1 bar                                 
2 bar                                 
3 bar                                 
4 bar                                 
5 bar                                 
6 bar                                 
7 bar                                 
8 bar                                 
9 bar                                 
10 bar                                
11 foo                                
12 foo                                
13 foo                                
14 foo                                

三項演算子

三項演算子の文法は

(変数) = (条件がTrueのときの値) if (条件) else (条件がFalseのときの値) 

三項演算子なら1行で書けます。

三項演算子で書くと1行
In [26]: for v in range(-5, 15):
    ...:     p = 'foo' if v > 10 else 'bar'
    ...:     print(v, p)
-5 bar
-4 bar
-3 bar
-2 bar
-1 bar
0 bar
1 bar
2 bar
3 bar
4 bar
5 bar
6 bar
7 bar
8 bar
9 bar
10 bar
11 foo
12 foo
13 foo
14 foo

ここではfor-print文の間のif-else文を三項演算子でまとめています。

ネスト

if-elif-else文

一つ条件を加えて0未満であれば'foobar'と出力するとき、elifを加えます。

これで「10より大きければ'foo'、0未満であれば'foobar'、それ以外は'bar'」を出力します。

if-else文条件が2つ以上
In [36]: for v in range(-5, 15, 1):
    ...:     if v > 10:
    ...:         p = 'foo'
    ...:     elif v < 0:
    ...:         p = 'foobar'
    ...:     else:
    ...:         p = 'bar'
    ...:     print(v, p)
    ...:
-5 foobar
-4 foobar
-3 foobar
-2 foobar
-1 foobar
0 bar
1 bar
2 bar
3 bar
4 bar
5 bar
6 bar
7 bar
8 bar
9 bar
10 bar
11 foo
12 foo
13 foo
14 foo

三項演算子のネスト

三項演算子をネストする場合の文法は

(変数) = (条件がTrueのときの値) if (条件) else (条件がFalseのときの値) if (条件) else (条件がFalseのときの値) ...if-()-else-()無限につなげていく
ネストした三項演算子
In [38]: for v in range(-5, 15, 1):
    ...:     p = 'foo' if v > 10 else 'foobar' if v < 0 else 'bar'
    ...:     print(v, p)
-5 foobar
-4 foobar
-3 foobar
-2 foobar
-1 foobar
0 bar
1 bar
2 bar
3 bar
4 bar
5 bar
6 bar
7 bar
8 bar
9 bar
10 bar
11 foo
12 foo
13 foo
14 foo

参考

Qiita - 三項演算子(Python)

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
13