196

重複の可能性:
Python 三項演算子
単純な if-then ステートメントを 1 行に入れる

if/elseステートメントをPythonで1行に 圧縮する方法はありますか?
私はよくあらゆる種類の近道を目にしますが、ここにも当てはまるのではないかと思います。

4

4 に答える 4

328

「三項」式を実行する Python の方法の例:

i = 5 if a > 7 else 0

に変換します

if a > 7:
   i = 5
else:
   i = 0

これは、リスト内包表記を使用する場合、または場合によっては return ステートメントで実際に役立ちますが、それ以外の場合は、読み取り可能なコードを作成するのにそれほど役立つかどうかはわかりません。

読みやすさの問題は、この最近の SO の質問で、 python で if-else ステートメントを使用するよりも優れた方法で詳細に議論されました。

また、同じタスクを達成するための他のさまざまな巧妙な(そしてやや難読化された) 方法も含まれています。それらの投稿に基づいて読むだけの価値があります。

于 2012-07-17T19:15:52.180 に答える
68

Pythonは三項演算子ifとして使用できます:

>>> 'true' if True else 'false'
'true'
>>> 'true' if False else 'false'
'false'
于 2012-07-17T19:15:16.787 に答える
41

値としてのみ使用:

x = 3 if a==2 else 0

また

return 3 if a==2 else 0
于 2012-07-17T19:14:57.460 に答える
28

次の条件式があります。

a if cond else b

しかし、これは表現であり、ステートメントではありません。

if ステートメントでは、ブロックが次のようなものであれば、ブロックの本体と同じ行にif(orelifまたは) を記述できます。else

if something: somefunc()
else: otherfunc()

しかし、これはフォーマット スタイルの問題としてお勧めできません。

于 2012-07-17T19:16:21.357 に答える