サイトアイコン Python Snippets

Pythonでの3項演算子の記述はどうするのか?

単純なケースならばif文よりも簡潔に記述できるので、Pythonでも使いたいです。

JavaScriptの例

var x = (a == 1 ? 10 : 20);  #aの値が1のとき、xに10を代入。そうでないとき20。

同様のことをPythonで記述するには、以下のようになります。

x = 10 if a == 1 else 20

JavaScriptでの記述に慣れているとすごく違和感あります。

JavaScriptタイプの記述はJava, C言語などでも使われているため広く知られている記述方法です。それゆえPython方式の記述は変な感じです。
ただリスト内包表記でのifなども似ているので、Pythonに慣れ親しめばそうでもありません。

ちなみに

この条件的な代入方式の記述を、「3項演算子」って呼ぶのは不適切です。(正しくは条件演算子だそうです。)
3項演算子は「項が3つある演算子」という意味です。+演算子などの2項演算子に対して3つあるから3項演算子です。ですがJavaやC言語において項が3つある演算子はこの条件的な代入しかないため、3項演算子=条件的な代入と定着しています。演算子の種類として3項ではありますが、必ずしも3項演算子=条件的な代入とみなすのはおかしいと思っています。

ただ一般的に、検索したり会話に用いられるこの条件的な代入を「3項演算子」と呼ぶのは紛れも無い事実だと思います。もはや条件演算子の事を3項演算子って呼ぶのは、しかたのないことだと思っています。

関連記事:

モバイルバージョンを終了