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関連投稿をまとめたマガジンがあるので覗いてみてください。
では今回はここまで。次回までさようなら。
この記事が気に入ったらサポートをしてみませんか?