if 文の除去テクニック(Python)

はじめに

 つぶやき Processing では、あと 1 文字あればツィートできるのに! …という状況に時々直面します。 そんなとき、本文書で説明するテクニックを使えば、 無事、つぶやき Processing できるかもしれません。

 なお、ここで説明している方法は私のオリジナルではなくて、 秋秋屋. さん(@dn_stp さん)の つぶやき Processing のソースを見て、 理解したものです:

この方法が使える条件(Python 限定)

 プログラミングでよく出てくる処理として、 ある条件が満たされている場合には、この値を。 そうでない場合には、この値をーなどと言うものがあります。

具体的なものとしては、例えば絶対値を計算する場合などです。 もし、x が正の値ならば、そのまま=つまり x という値を使います。 そうでないならば、-x という値を使う、といった処理です。

 コードで書くと次のようになります:

x if x>0 else -x

文字数削減の方法

 Python では、True は 1 として、False は 0 として扱われる場合があります。 例えば配列のインデックスとして True や False が使われた場合などがそれです。

その性質をここでは利用してみます。 配列を利用し、False ならば 0、True ならば 1 なので、 以下のようなコードで代替できます:

[ the value when False, the value when True ][ cond-expr ]

 例えば、絶対値を返す処理は次のように書けます:

[-x,x][x>0]

if 文を使った方法と比較してみると、

x if x>0 else -x
[-x,x][x>0]

となり、本文書で紹介した方法の方が 5 文字少ないプログラムとなります。