pythonで三項演算子のネスト

  • 2
    いいね
  • 0
    コメント

三項演算子は単純な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)