見出し画像

Python~三項演算子~

 こんにちは。風助です。
 今回はPythonでif文を1行で再現できる「三項演算子」について書いていきます。

 しばらく投稿ができていませんでした。仕事が忙しかったのもありますが、どこかnoteに向かう気がしなくなってしまって。
 しばらくゆっくりしていたのでまたnoteに取り組む気になれたのでまた積極的に投稿していきたいです。
 新年一発目の投稿でもあるので頑張りますよ。
 アイキャッチがダサい気がします…。デザインの勉強もかじってみようかな。

はじめに

 はじめに三項演算子とは何かについて軽く触れていきます。

 三項演算子とはその名の通り3つの項で1つの解を導くための演算子の事です。
 「演算子」なので普段よく見る+(足す)、-(引く)、×(かける)、÷(割る)の四則演算子や>(大なり)、<(小なり)などと同じものです。
 そう考えると抵抗がなくなる気がしませんか?

 ちなみにPythonで登場する演算子はほとんど二項演算子です。

A + B = C

 このような簡単な式はAとBの2つの項からCという一つの解を導いています。なので二項演算。
 正確に言えば私の説明は間違っていますが、まあニュアンスが伝わればいいです。正確な定義がわからなくても使えちゃいますからね。それにこの定義は数学の分野になるので深堀はしません。

 それとPythonにおける三項演算子というものは実は一つじゃないんです。
 3つの項で一つの解を導ければそれはすべて三項演算なので、「スライシング」も三項演算になるそうです。​まあスライシングは必ずしも三項になるわけではないですが。

 今回は「if文を1行で表すための」三項演算子について書いていきます。

三項演算子の使い方

 書き方としては以下のようになります。

条件式が真のときの返り値 if 条件式 else 条件式が偽のときの返り値

 こんな感じで書きます。

 「条件式が真のときの返り値」、「条件式」、「条件式が偽のときの返り値」の3つの値から1つの解を導きます。「if else」が演算子ってことでしょうね。

 例えばこんな感じになります。

dayOfWeek = 'sunday' if a % 7 == 6 else 'weekday'

 このコードは「a」を日付としたとき、それが日曜か否か…みたいなことをするコードです。どこで使うのかとかは追求しないでください。
 「if else」の間のところ(a % 7 == 6)のところが条件式です。
 そして「if」の前が条件式が真のときの返り値で、「else」の後ろが条件式が偽のときの返り値です。
 要するにこのコードでは「a」が7の倍数マイナス1なら「sunday」を返し、そうじゃないときは「weekday」を返します。週6勤務です。

 ちなみに三項演算子で「if-elif-else」を表現することができます。見づらくなるのでお勧めはしませんが。

dayOfWeek2 = 'sunday' if a % 7 == 6 else 'saturday' if a % 7 == 5 else 'weekday'

 このコードは上のコードにさらに追加したものになります。
 分かりやすくすると以下のようになります。

dayOfWeek2 = 'sunday' if a % 7 == 6 else ('saturday' if a % 7 == 5 else 'weekday')

 else以降にもう一度三項演算子を追加した形になります。見づらいですよね。
 ここまでするなら普通のif文でいいと思います。個人的な意見ですが。

 三項演算子はlambda式と組み合わせられることが多いそうです。それについても今後投稿する予定です。

おわりに

 今回は三項演算子について書きました。参考になったでしょうか。

 ブログをやっています。お手すきならぜひ見てください。

 Python関連投稿をまとめたマガジンがあるので覗いてみてください。

 では今回はここまで。次回までさようなら。

この記事が気に入ったらサポートをしてみませんか?