Pythonのif文を一行で書く方法
三項演算子を使用することで、if文を1行で書くことが可能です。
(条件式)?真の場合の場合の値:偽の場合の値
のように書きます。
初見だと「なんだこの暗号は…??」と意味不明かもですが、知っているとコードを短くシンプルに書けるというメリットがあります。また、条件によっては三項演算子を使ったほうが処理が早いケースもあります。
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 …を一行で記述する方法
もう一つ、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行にまとめることができます。
書き方はこんな感じ。使い所によっては、コードがシンプルに見やすく書けます。
[処理 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)
これは使いたくなりますね。
ただし、複雑な条件を処理する場合は、可読性が低下する可能性があるため、注意が必要です。