1167

私はPythonを始めたばかりで、構文の簡潔さが本当に気に入っています。ただし、1行に収まるように---ステートメントを記述する簡単ifな方法はありますかthenelse

例えば:

if count == N:
    count = 0
else:
    count = N + 1

これを書くもっと簡単な方法はありますか?つまり、Objective-Cでは、これを次のように記述します。

count = count == N ? 0 : count + 1;

Pythonに似たものはありますか?

アップデート

この場合、を使用できることを知っていますcount == (count + 1) % N

一般的な構文について質問しています。

4

5 に答える 5

2184

これは、if-thenよりも具体的には三項演算子の式です。Pythonの構文は次のとおりです。

value_when_true if condition else value_when_false

より良い例:(バーンズ氏に感謝)

'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
于 2010-05-10T13:00:17.493 に答える
258

さらに、「通常の」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)) 
于 2012-07-07T08:41:11.707 に答える
159
count = 0 if count == N else N+1

-三項演算子。私はあなたの解決策がこれより読みやすいと思いますが。

于 2010-05-10T13:00:19.000 に答える
138

一般的な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]()
于 2010-05-10T13:22:06.577 に答える
28
<execute-test-successful-condition> if <test> else <execute-test-fail-condition>

コードスニペットを使用すると、次のようになります。

count = 0 if count == N else N + 1
于 2010-05-10T15:23:46.840 に答える