【Python】if文を1行で書く方法を初心者向けに解説!三項演算子でスッキリコードを書こう
こんにちは、とまだです。
Pythonを学習していて、「if文が長くて読みづらい...」と感じたことはありませんか?
実は、簡単な条件分岐なら 1行で書ける 方法があるんです。
これを知っているだけで、コードがグッとスッキリ見やすくなります。
Pythonの三項演算子とは?一行ifの基本を理解しよう
通常のif文って、こんな感じで書きますよね。
age = 20
if age >= 18:
message = "成人です"
else:
message = "未成年です"
これを1行で書くと...
age = 20
message = "成人です" if age >= 18 else "未成年です"
たった1行になりました!
これが三項演算子(条件式)と呼ばれる書き方です。
基本の構文はこれだけ
結果 = 真の時の値 if 条件 else 偽の時の値
日本語で読むと「もし条件が真なら『真の時の値』を、そうでなければ『偽の時の値』を返す」という意味になります。
最初は語順に違和感があるかもしれません。
でも慣れると、とても読みやすくなりますよ。
どんな時に使える?実務でよく見る使用例
1. 変数の初期値設定
ユーザーの入力があるかどうかで、デフォルト値を設定する場面はよくあります。
# ユーザー入力がない場合はデフォルト値を使う
user_name = input_name if input_name else "ゲスト"
# もっと短く書くなら
user_name = input_name or "ゲスト"
2. 数値の符号判定
num = -5
sign = "正" if num > 0 else ("ゼロ" if num == 0 else "負")
print(f"{num}は{sign}の数です") # -5は負の数です
3. リスト内包表記との組み合わせ
これは実務でよく使います。
numbers = [1, 2, 3, 4, 5]
# 偶数は2倍、奇数はそのまま
result = [n * 2 if n % 2 == 0 else n for n in numbers]
print(result) # [1, 4, 3, 8, 5]
4. APIレスポンスの処理
# APIから取得したデータの処理
status_text = "成功" if response.status_code == 200 else "エラー"
通常のif文と比較してみよう
可読性の比較
通常のif文
discount_rate = 0
if is_member:
discount_rate = 0.2
else:
discount_rate = 0
三項演算子
discount_rate = 0.2 if is_member else 0
シンプルな条件なら、三項演算子の方が見やすいですね。
複雑な条件の場合
# これは読みづらい...
result = "A" if score >= 90 else ("B" if score >= 80 else ("C" if score >= 70 else "D"))
# 通常のif文の方が読みやすい
if score >= 90:
result = "A"
elif score >= 80:
result = "B"
elif score >= 70:
result = "C"
else:
result = "D"
複雑な条件分岐では、通常のif文を使いましょう。
使う時の注意点
1. ネストは避ける
三項演算子の中に三項演算子を入れると、とても読みづらくなります。
# 悪い例
msg = "朝" if hour < 12 else ("昼" if hour < 18 else "夜")
# 良い例
if hour < 12:
msg = "朝"
elif hour < 18:
msg = "昼"
else:
msg = "夜"
2. 処理が複雑な場合は使わない
# 悪い例(処理が複雑)
result = (calculate_complex_value() if condition else perform_another_calculation())
# 良い例
if condition:
result = calculate_complex_value()
else:
result = perform_another_calculation()
3. elseは省略できない
Pythonの三項演算子では、else部分は必須です。
# エラーになる
result = "OK" if condition # SyntaxError!
# 正しい書き方
result = "OK" if condition else None
よくある間違いと対処法
1. 値と処理を混同する
# 間違い:print()は値を返さない
message = print("成功") if success else print("失敗")
# 正解:値を設定してから出力
message = "成功" if success else "失敗"
print(message)
2. Noneの扱い
# Noneチェックの場合
name = user_name if user_name is not None else "名無し"
# もっとPythonicに書くなら
name = user_name or "名無し" # ただし空文字列も偽と判定される点に注意
実践的な活用テクニック
辞書のget()メソッドと組み合わせ
user_role = user_dict.get('role')
access_level = "admin" if user_role == "administrator" else "user"
関数の引数でのデフォルト値設定
def greet(name=None):
display_name = name if name else "ゲスト"
return f"こんにちは、{display_name}さん!"
データ変換での活用
# CSVデータの処理など
def convert_value(val):
return int(val) if val.isdigit() else val
data = ["123", "abc", "456"]
converted = [convert_value(v) for v in data]
print(converted) # [123, 'abc', 456]
まとめ
Pythonの三項演算子(一行if)は、シンプルな条件分岐をスッキリ書ける便利な機能です。
使いどころ
- 単純な2択の条件分岐
- 変数の初期値設定
- リスト内包表記との組み合わせ
避けるべき場面
- 複雑な条件分岐
- ネストが必要な場合
- 可読性が下がる場合
適切に使えば、コードの可読性が向上し、より Pythonic なコードが書けるようになります。
まずは簡単な条件分岐から試してみて、徐々に慣れていきましょう!
著者について

とまだ
フルスタックエンジニア
Learning Next の創設者。Ruby on Rails と React を中心に、プログラミング教育に情熱を注いでいます。初心者が楽しく学べる環境作りを目指しています。
著者の詳細を見る →