pythonコード プログラミング系 python python grammar 非エンジニア向け

【Python Coding】三項演算子(条件演算子)の使い方を紹介

こんにちは、TAKです。
今回は、pythonの「三項演算子(条件演算子)」の使い方について紹介していきます。

三項(条件)演算子という言葉自体は僕も最近知ったのですが、pythonに限らずC言語やJAVAなどでも使われる方法のようです。

今回紹介するpythonの三項演算子の内容は、「if文を1行で書く」ためのテクニックだと思ってもらればOKです。

【こんな人に読んで欲しい記事です】

● pythonで「三項演算子(条件演算子)」を書けるようになりたい方

● pythonの「if文」を1行で書くための方法・テクニックを知りたい方

今回はpythonの文法に関連する内容ですが、「if文」の基礎がわかっていることを前提に進めていきます。
python初心者の方は、まずは基本となる通常の「if文」を理解した上で読み進めるようにしてください。

通常の条件式を用いた場合

冒頭でもお伝えしたように、三項(条件)演算子というのは「if文」を一行で書く方法を言います。
厳密にはもっと違う説明があるでしょうが、コードを書く上ではこんなイメージでいいかと思います。

三項演算子を理解するために、まず最初に「通常の条件式」と比較していきます。
ここでは、「aからz」までのアルファベットの文字列を用意して、指定した文字がアルファベットの中に含まれている場合には「YES」を、含まれない場合には「NO」を返す関数を作ります。

通常の条件式を用いた場合|アルファベット文字列の判定

この関数に、適当に文字列を与えてみましょう。その結果が以下です。

適当な文字列を関数に与えた結果

「a」や「z」といった文字列はありますが、「YY」はないので結果NOとなっていますね。

使い方①|三項演算子(条件演算子)の基本

次に、先ほど作った条件式と同じ結果になるように、三項演算子を用いてコーディングしていきます。
言葉では伝えにくいのですが、あえて言語化すると以下のような書き方になります。

三項演算子(条件演算子)の書き方

TRUEの時に返す値 if 条件式 else FALSEの時に返す値

この書き方のイメージを持った上で、先ほどと同じ関数を作ってみます。

三項演算子(条件演算子)を用いた場合の関数|アルファベット文字列の判定

上記赤線部分が三項演算子を使ったコーディングとなります。
「YESを返してね、flagがTRUEだったら。そうじゃなかったらNOを返して」といったニュアンスです。
先ほどと同じく、適当な値を与えて結果を見てみましょう。

すると、「b」や「s」は含まれているので「YES」ですが、「XX」はないので「NO」となっていますね。
これが、三項演算子(条件演算子)を用いたコードの書き方となります。

使い方②|lambda式(無名関数)と組み合わせる

続いて、lambda式(無名関数)と組み合わせた書き方も出来るので紹介していきます。
「lambda式って何?」という方は、以下の記事で紹介しているので参考にしてみてください。

ここでは、lambda式を使って、文字列の長さが10文字以上なら「Long」を、それ以外の場合には「Short」を返すような関数を作ってみたいと思います。

最初に、変数alphabetをそのまま(26文字で)与え、次に先頭5文字だけ与えてみます。

lambda式と条件演算子の組み合わせ|26文字与えた結果
lambda式と条件演算子の組み合わせ|5文字与えた結果

上記結果からわかるように、lambda式で定義した三項演算子が適切に機能していますね。
書き方自体は先ほどと全く同じなので、lambdaと組み合わせるだけでOKです。

使い方③|「if~elif~else~」を表現する

最後に、より複雑な条件分岐をしたい場合に使える方法を紹介します。
「if文」における「if~elif~else~」に相当する方法と思ってください。

ここでは、変数alphabetを使って以下3つの変数を用意してみます。

● 変数「x1」 ・・・ 変数alphabetの先頭から1文字切り出し(aのみ)

● 変数「x2」 ・・・ 変数alphabetの先頭から15文字切り出し(aからoまで)

● 変数「x3」 ・・・ 変数alphabetの先頭から26文字切り出し(aからzまで)

文字列の長さに応じて「Short」「Middle」「Long」と分類することが目的です。
「10文字未満」の場合には「Short」、「10文字以上20文字未満」の場合には「Middle」、「20文字以上」の場合には「Long」となるようにしてみます。

つまり結論としては、「x1:Short」、「x2:Middle」、「x3:Long」となります。

まず、必要な変数を準備しましょう。

変数「x1」「x2」「x3」の準備

通常の条件式を用いて判定した場合の結果が以下の通りです。

通常の条件式を用いた場合

三項演算子(条件演算子)を用いた場合の結果が以下です。

三項演算子(条件演算子)を用いた場合

上記コードのように、「if~else~」を繰り返して書く(elifは使わない)点が特徴的ですね。
このように書くことで一行でかけて便利なのですが、可読性の観点からは若干読みにくくなるかもしれないので、その点だけ注意です。

さいごに

今回は、pythonの条件式を一行でシンプルに書く「三項演算子(条件演算子)」という方法を紹介してみました。

通常の条件式の方と合わせて使えるようにしておくと結構便利なので、簡単な条件式を書くときには「今回紹介した方法が使えないかな?」と是非練習して使えるようになってください。

では今回はこのへんで。