python if 一行/条件の変数の記述の入門のyucco

Pythonのif文を一行で書く方法

Pythonのif文を一行で書く方法
三項演算子を使用することで、if文を1行で書くことが可能です。

(条件式)?真の場合の場合の値:偽の場合の値

のように書きます。

初見だと「なんだこの暗号は…??」と意味不明かもですが、知っているとコードを短くシンプルに書けるというメリットがあります。また、条件によっては三項演算子を使ったほうが処理が早いケースもあります。

Pythonの三項演算子でif文を一行で書く

Pythonの三項演算子でif文を一行で書く
シンプルに書けるってのは、具体的にどーゆー場合なんだろうか…。Pythonの三項演算子でif文を一行で書くサンプルコードを以下に示します。

# if文
x = 10

if x < 10:
    print("xは10未満です。")
else:
    print("xは10以上です。")

# 三項演算子
print("xは10未満です。" if x < 10 else "xは10以上です。")

このコードは、xが10未満の場合は、”xは10未満です。”を出力し、xが10以上の場合は、”xは10以上です。”を出力します。

これはたしかに、1行で書きたくなりますね。

Pythonでif … elif … else …を一行で記述する方法

Pythonでif ... elif ... else ...を一行で記述する方法

もう一つ、if分でelif、elif、elseっていう分岐のカタマリみたいなやつを三項演算子で1行記述する方法もあります。

x = 15

print("xは10未満です。" if x < 10 else ("xは10以上20未満です。" if x < 20 else "xは20以上です。"))
処理内容は、以下のコードと同等です。
if x < 10:
    print("xは10未満です。")
elif x < 20:
    print("xは10以上20未満です。")
else:
    print("xは20以上です。")
うーん、これは…1行化するとバグりやすそうだし、そもそも見にくいかも。

Pythonでfor文とif文を1行にまとめる方法

Pythonでfor文とif文を1行にまとめる方法
Pythonでは、内包表記を使って、for文とif文を1行にまとめることができます。

関連)Pythonのlist メソッド一覧

書き方はこんな感じ。使い所によっては、コードがシンプルに見やすく書けます。

[処理 for 変数 in イテラブルなオブジェクト if 条件式]

例えば、以下のコードは、リストの各要素の偶数のみを表示します。

list = [1, 2, 3, 4, 5]

print([x for x in list if x % 2 == 0])

このコードは、以下のコードと同等です。

list = [1, 2, 3, 4, 5]

result = []
for x in list:
    if x % 2 == 0:
        result.append(x)

print(result)

これは使いたくなりますね。

ただし、複雑な条件を処理する場合は、可読性が低下する可能性があるため、注意が必要です。