まとめへのリンク
はじめに
Pythonの勉強をするために、acopyという群知能ライブラリを写経していました。
acopyでは、多くのPythonの面白い文法・イディオムが使われており、その中でも便利だなぁというのをまとめています。
今回は、Pythonの三項演算子を学びます。
三項演算子
三項演算子は、C++などでは
条件式: trueの値: falseの値
などで、if-elseで表現できる文を一行で終わらす演算子です。
当然記述量は断然短くなりますが、その分三項演算子をネストすると可視化性は著しく下がります。
もし、ネストするならばアルゴリズムの見直しや、if文で普通に書くことを意識しましょう。
Pythonの三項演算子
Pythonの三項演算子は
Trueの値 if 条件式 else Falseの値
と
C++やC言語と順番が違います。
C++やCを使っている自分にとっては、かなり違和感がする記法です。
C++なら
- とりあえず条件式書いたろ!
- Trueの値書いちゃえ
- Falseの値書いちゃえ
と自然な流れが出来るので嬉しいのですがPythonの場合
- 条件式なんやろ・・・たしかTrueのときはこの値やな
- 条件式こうやな
- Falseはこう
のように順序が逆で非常にやりずらいなぁって感じます。
Vimmerなどならこれがすらってかけるんだろうなぁって思いますね。
偶数奇数
とりあえず偶数奇数判定を書いてみます。
a = int(input())
s = "odd" if a % 2 else "even"
print(s)
ここらへんの書き方が、英語っぽいなぁってなんか感じます。
先に真 条件式 偽 の順を早く覚えたいですね。
偶数奇数(負を除く)
負があると、面倒なので、負の場合はminusと出力するようにしましょう。
a = int(input())
s = "minus" if a < 0 else "even" if a % 2 == 0 else "odd"
print(s)
まず、マイナスかどうかをチェックしてマイナスならminus
で終了です。
そうでないなら、入れ子になっている三項演算子で再びeven, oddをチェックします。
最後に
三項演算子を使うのはやめよう!(適度に)