Python

【Python】1行だけのif文で変数の初期化を行う


if文を利用した変数の初期化は、通常の書き方では複数行のプログラムになってしまいますが、1行だけにまとめることも可能です。

本記事では、1行だけのif文で変数の初期化を行う方法について解説します。

実際にプログラムを作成してみる

1行だけのif文で変数の初期化を行う方法の概要、実装例を紹介します。

基本的な書き方

「1行だけのif文による変数の初期化」の基本的な書き方は以下の通りです。

変数 = 値① if 条件式 else 値②
...
  条件式がTrueの場合  -> 値①を変数へ格納
  条件式がFalseの場合 -> 値②を変数へ格納

実装例 – 変数の値は2パターン

上記の書き方を基にプログラムを作成します。

if __name__ == '__main__':

    key = 'a'
    val = 1 if key=='a' else 2  # 1を格納
    print('key:a -> val={0}'.format(val))

    key = 'b'
    val = 1 if key=='a' else 2  # 2を格納
    print('key:b -> val={0}'.format(val))

このプログラムを実行すると以下の出力結果が得られます。

key:a -> val=1
key:b -> val=2

実装例 – 変数の値は3パターン以上

上記の書き方に条件式を追加して分岐のパターンを増やすことも可能です。

if __name__ == '__main__':

    key = 'a'
    val = 1 if key=='a' else 2 if key=='b' else 3 # 1を格納
    print('key:a -> val={0}'.format(val))

    key = 'b'
    val = 1 if key=='a' else 2 if key=='b' else 3 # 2を格納
    print('key:b -> val={0}'.format(val))

    key = 'c'
    val = 1 if key=='a' else 2 if key=='b' else 3 # 3を格納
    print('key:c -> val={0}'.format(val))

このプログラムを実行すると以下の出力結果が得られます。

key:a -> val=1
key:b -> val=2
key:c -> val=3