(最終更新日:2023年6月)
✔このような方へ向けて書かれた記事となります
「Python 3の三項演算子って何ができるのだろうか?」
「Python 3の三項演算子の書き方とは?」
「Python 3の三項演算子を使った実例が見たい」
✔当記事を通じてお伝えすること
- Python 3の三項演算子の概要
- Python 3の三項演算子の書き方と応用方法
- Python 3の三項演算子を活用した実例
当記事では、Python 3の三項演算子の基本から応用まで、具体的な例に基づいてわかりやすく解説しています。
ぜひ最後までお読みいただき、三項演算子の使い方をマスターしましょう。
Pythonの3項演算子(条件演算子)の基本
こちらでは、Pythonの3項演算子についてお伝えしていきます。
- 3項演算子とは
- 通常のif文表記との違い
3項演算子とは
3項演算子、または条件演算子は、条件に基づいて値を決定するために使用されるものです。
3項演算子は以下の形式で構成されます。
x if condition else y
condition
がTrueの場合はx
を、Falseの場合はy
を返します。
1行で簡潔な条件判定を書けるのがメリットです。
age = 20
category = "adult" if age >= 18 else "minor"
print(category)
# Output: adult
通常のif文表記との違い
3項演算子の良さは、1行で条件に応じた値を返せること。
通常のif文では、条件に応じた処理を複数行に分けて書くことになります。
通常のif文の例です。
age = 20
if age >= 18:
category = "adult"
else:
category = "minor"
print(category)
# Output: adult
3項演算子では以下のようになります。
age = 20
category = "adult" if age >= 18 else "minor"
print(category)
# Output: adult
3項演算子の基本的な使い方
こちらでは、3項演算子の基本的な使い方について説明します。
- 基本的な書き方
- ネストされた条件式
基本的な書き方
3項演算子はこちら。
value_if_true if condition else value_if_false
以下が例です。
x = 10
'positive' if x > 0 else 'non-positive'
xの値が10なので、positiveが返されます。
ネストされた条件式
3項演算子をネストさせることも可能です。
複数の条件を1行で評価できます。
例はこちら。
x = 5
result = 'positive' if x > 0 else 'zero' if x == 0 else 'negative'
print(result)
# Output: positive
3項演算子の応用例
こちらでは、3項演算子の応用的な使い方について紹介します。
- リストや辞書内での使い方(内包表記)
- ラムダ式と組み合わせる
リストや辞書内での使い方(内包表記)
3項演算子は、リスト内包表記や辞書内包表記の中で非常に便利です。
リストや辞書の要素を生成しながら条件に基づいて値を選択できます。
例を見てみましょう。
squared_evens = [x ** 2 if x % 2 == 0 else x for x in range(10)]
print(squared_evens)
# Output: [0, 1, 4, 3, 16, 5, 36, 7, 64, 9]
辞書内包表記での使用例です。
word = "hello"
letter_count = {char: word.count(char) if char != 'l' else 0 for char in word}
print(letter_count)
# Output: {'h': 1, 'e': 1, 'l': 0, 'o': 1}
ラムダ式と組み合わせる
3項演算子は、ラムダ式(無名関数)と組み合わせて使えます。
ラムダ式内で簡潔な条件分岐をおこないましょう。
f = lambda x: 'positive' if x > 0 else 'non-positive'
print(f(5))
# Output: positive
print(f(-3))
# Output: non-positive
ラムダ式とは、無名の関数のこと。詳しくは別記事でもご紹介しています。
3項演算子のメリットと注意点
こちらでは、3項演算子のメリットと、使用する上での注意点について説明します。
- コードが簡潔でわかりやすい
- 実行速度の向上
- 複雑な表現への対応
- 可読性の確保
コードが簡潔でわかりやすい
3項演算子は1行で条件分岐を記述することができ、コードが簡潔になります。
これは特に単純な条件分岐の場合にコードの可読性を向上させるでしょう。
# 3項演算子を使用した条件分岐の例
# ユーザーの年齢が20歳以上かどうかを判定する
age = 25
# 3項演算子を使用した条件分岐
message = "成人" if age >= 20 else "未成年"
print(message)
# 出力: 成人
# 数値が正の場合にはそのまま、負の場合には絶対値を取る
number = -10
# 3項演算子を使用した条件分岐
absolute_value = number if number >= 0 else -number
print(absolute_value)
# 出力: 10
実行速度の向上
通常のif文に比べて、3項演算子は短い構文であるため、実行速度がわずかに速くなることがあります。
import time
# if文による条件分岐の処理時間計測
start_time = time.time()
for _ in range(1000000):
age = 25
if age >= 20:
result = "成人"
else:
result = "未成年"
end_time = time.time()
if_time = end_time - start_time
# 3項演算子による条件分岐の処理時間計測
start_time = time.time()
for _ in range(1000000):
age = 25
result = "成人" if age >= 20 else "未成年"
end_time = time.time()
ternary_operator_time = end_time - start_time
# 結果出力
print("if文の処理時間:", if_time)
print("3項演算子の処理時間:", ternary_operator_time)
複雑な表現への対応
3項演算子は、ネストされた条件式やラムダ式と組み合わせることで、複雑な条件分岐を表現できます。
# 数値が偶数か奇数か、かつ正の数か負の数かを判定する例
number = 7
result = "正の偶数" if number > 0 and number % 2 == 0 else "正の奇数" if number > 0 and number % 2 != 0 else "負の偶数" if number < 0 and number % 2 == 0 else "負の奇数" if number < 0 and number % 2 != 0 else "ゼロ"
print(result)
可読性の確保
3項演算子は簡潔な記述が可能ですが、過度に使用するとコードの可読性が低下することもあります。
複雑なネストや条件が多い場合は、通常のif文を使用しましょう。
# 年齢と性別に応じてメッセージを表示する例
age = 25
gender = 'male'
message = "成人男性です" if age >= 20 and gender == 'male' else "成人女性です" if age >= 20 and gender == 'female' else "未成年です"
print(message)
まとめ
こちらで、Pythonの3項演算子についてお伝えしてきました。
- 3項演算子の基本的な概念と使用法
- 応用的な使い方とメリット
- 注意点と可読性の確保
3項演算子は、Pythonプログラミングにおいて非常に便利なツールです。
ただし、その使い方には注意が必要であり、過度な使用はコードの可読性を低下させる可能性があります。
適切なバランスを心がけながら、効率的でわかりやすいコードを書くことが大切です。