Possible Duplicate: Python三項演算子
私はPythonを始めたばかりで、その構文の簡潔さがとても気に入っています。しかし、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というよりも、具体的には[三項演算子][1]式で、pythonの構文は以下の通りです。
value_when_true if condition else value_when_false
Better Example: (Thanks [Mr. Burns][2])
'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
[1]: https://en.wikipedia.org/wiki/%3F:#Python [2]: https://stackoverflow.com/users/253254/joshua-burns
count = 0 if count == N else N+1
- は三項演算子です。しかし,あなたの解答はこれよりも読みやすいと言えるでしょう。
一般的な三段論法。
value_true if <test> else value_false
別の方法としては
[value_false, value_true][<test>]
例
count = [0,N+1][count==N]
これは、両方のブランチを評価してから1つを選択します。選ばれたブランチだけを評価するには
[lambda: value_false, lambda: value_true][<test>]()
のようになります。
count = [lambda:0, lambda:N+1][count==N]()