[解決済み] if-elif-else文を1行にまとめる?
2022-04-14 21:51:24
質問
以下のリンクを読みましたが、私の質問には答えてくれません。
Pythonに三項条件演算子はありますか?
(if-else文を1行に凝縮するための質問です。)
if-elif-else 文を1行に収まるように簡単に書く方法はありますか?
例えば
if expression1:
statement1
elif expression2:
statement2
else:
statement3
実際の例でもいい。
if i > 100:
x = 2
elif i < 100:
x = 1
else:
x = 0
ただ、上の例を次のように書けば、もっと簡潔な感じになるような気がします。
x=2 if i>100 elif i<100 1 else 0 [WRONG]
解決方法は?
いいえ、それは不可能です(少なくとも任意のステートメントでは)し、望ましいことでもありません。すべてを1行に収めると、ほとんどの場合、次のような違反になります。 PEP-8 行の長さが80文字を超えないようにすることが義務付けられています。
また、Pythonの禅にも反しています: "読みやすさが大事"。 (タイプ
import this
をPythonのプロンプトで表示すると、全文が読めます)。
あなたは できる Pythonでは3項式が使えますが、式に対してのみで、文に対しては使えません。
>>> a = "Hello" if foo() else "Goodbye"
編集する
修正された質問では、代入される値を除いて3つの文が同じであることがわかりました。この場合、三項演算子は連鎖しますが、やはり可読性は低くなると思います。
>>> i=100
>>> a = 1 if i<100 else 2 if i>100 else 0
>>> a
0
>>> i=101
>>> a = 1 if i<100 else 2 if i>100 else 0
>>> a
2
>>> i=99
>>> a = 1 if i<100 else 2 if i>100 else 0
>>> a
1
関連
-
[解決済み] _tkinter.TclError: 表示名がなく、$DISPLAY環境変数もない。
-
[解決済み】Django: ImproperlyConfigured: SECRET_KEY 設定は空であってはならない
-
[解決済み】IndexError: invalid index to scalar variableを修正する方法
-
[解決済み】 'numpy.float64' オブジェクトは反復可能ではない
-
[解決済み] 複数の例外を1行でキャッチする(ブロックを除く)
-
[解決済み] Pythonのswitch文の代用品?
-
[解決済み] リスト内包のif/else
-
[解決済み] Pythonで改行(行継続)をするにはどうしたらいいですか?
-
[解決済み] AngularJS テンプレートにおける if else ステートメント
-
[解決済み】Bashのif, elif, else文の問題点
最新
-
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を使ったオフィス自動化コード例
-
python string splicing.join()とsplitting.split()の説明
-
Python カメの描画コマンドとその例
-
pythonサイクルタスクスケジューリングツール スケジュール詳解
-
Pythonを使って簡単なzipファイルの解凍パスワードを手作業で解く
-
風力制御におけるKS原理を深く理解するためのpythonアルゴリズム
-
[解決済み】終了コード -1073741515 (0xC0000135)でプロセス終了)
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み] Pythonの式と文の違いは何ですか?
-
[解決済み】Pythonに三項条件演算子はありますか?