[解決済み】Pythonに三項条件演算子はありますか?
質問
もしPythonが 三項演算子 他の言語構造を使ってシミュレーションすることは可能ですか?
どのように解決するのですか?
はい、そうです。 追加 をバージョン2.5でリリースしました。式の構文は次のとおりです。
a if condition else b
最初
condition
が評価され、次にどちらか一方が評価されます。
a
または
b
に基づいて評価され、返されます。
ブーリアン
の値は
condition
. もし
condition
と評価されます。
True
であれば
a
が評価されて返されますが
b
が無視される場合、あるいは
b
が評価されて返されますが
a
は無視されます。
というのは、ショートさせることができるからです。
condition
が真である場合のみ
a
が評価され
b
は全く評価されませんが
condition
が偽の場合のみ
b
が評価され
a
は全く評価されない。
例えば
>>> 'true' if True else 'false'
'true'
>>> 'true' if False else 'false'
'false'
なお、条件文は
表現
ではなく
ステートメント
. つまり、代入文や
pass
またはその他の
ステートメント
条件付き
表現
:
>>> pass if False else x = 3
File "<stdin>", line 1
pass if False else x = 3
^
SyntaxError: invalid syntax
しかし、条件式を使って、このように変数を代入することができます。
x = a if True else b
条件式は、2つの値を切り替えるものと考えてください。一つの値か別の値か」という状況にあるときには非常に便利ですが、それ以外のことはあまりできません。
ステートメントを使用する必要がある場合は、通常の
if
ステートメント
の代わりに、条件付きの
表現
.
いくつかの理由から、一部の Pythonist たちから嫌われていることを心に留めておいてください。
-
引数の順番が古典的な
condition ? a : b
他の多くの言語の三項演算子(例えば C , C++ , 囲碁 , パール , ルビー , Java , ジャバスクリプト など)、Pythonの"amazing"な挙動に慣れていない人が使うとバグにつながるかもしれません(彼らは引数の順番を逆にするかもしれません)。 - 通常の思考の流れ(条件を先に考え、その後に効果を考える)に反するため、「扱いにくい」と感じる人がいる。
-
スタイル上の理由。(ただし、「インライン
if
' にすることができます。 本当に は便利で、スクリプトをより簡潔にすることができますが、実際にはコードを複雑にしてしまいます)。
もし、順番を覚えるのが大変なら、声に出して読むときは、(ほとんど)言いたいことを言うということを思い出してください。例えば
x = 4 if b > 8 else 9
は、次のように音読します。
x will be 4 if b is greater than 8 otherwise 9
.
公式ドキュメントです。
関連
-
Pythonの画像ファイル処理用ライブラリ「Pillow」(グラフィックの詳細)
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
-
[解決済み】if __name__ == "__main__": は何をするのでしょうか?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PythonによるLeNetネットワークモデルの学習と予測
-
python implement mysql add delete check change サンプルコード
-
Python入門 openを使ったファイルの読み書きの方法
-
Python LeNetネットワークの説明とpytorchでの実装
-
[解決済み】 AttributeError("'str' object has no attribute 'read'")
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない
-
[解決済み] Python ? (条件/三項)演算子による代入 [重複]の場合
-
[解決済み] Pythonの条件付き演算子?[重複しています]
-
[解決済み】簡単なif・then・else文を1行にまとめる【重複】について
-
[解決済み] C++の短縮形 "if "のPython版[重複]。