可能な重複:
Python三項演算子
私はPythonに入ったばかりで、構文の簡潔さがとても好きです。しかし、1行に収まるようにif
-then
-else
ステートメントを書くもっと簡単な方法はありますか?
例えば:
if count == N:
count = 0
else:
count = N + 1
これを書くもっと簡単な方法はありますか?つまり、Objective-Cではこれを次のように書きます。
count = count == N ? 0 : count + 1;
Pythonに似たようなものはありますか?
更新
この場合私はcount == (count + 1) % N
を使用できることを私は知っています。
一般的な構文について質問しています。
これは、if-thenより具体的には 三項演算子 expressionです。これはpythonの構文です。
value_when_true if condition else value_when_false
より良い例: (thanks Mr. Burns )
'Yes' if fruit == 'Apple' else 'No'
if構文と代入して対比する
fruit = 'Apple'
isApple = True if fruit == 'Apple' else False
vs
fruit = 'Apple'
isApple = False
if fruit == 'Apple' : isApple = True
さらに、「普通の」if
構文を使用して、コロンで1行にまとめることもできます。
if i > 3: print("We are done.")
または
field_plural = None
if field_plural is not None: print("insert into testtable(plural) '{0}'".format(field_plural))
count = 0 if count == N else N+1
- 三項演算子私はあなたの解決策がこれより読みやすいと言うでしょうが。
一般的な3項の構文
value_true if <test> else value_false
別の方法があります:
[value_false, value_true][<test>]
例えば:
count = [0,N+1][count==N]
これはどちらかを選択する前に両方のブランチを評価します。選択したブランチだけを評価するには
[lambda: value_false, lambda: value_true][<test>]()
例えば。:
count = [lambda:0, lambda:N+1][count==N]()
<execute-test-successful-condition> if <test> else <execute-test-fail-condition>
あなたのコードスニペットでそれはなるでしょう、
count = 0 if count == N else N + 1