Een eenvoudige indiening van de toenmalige optie op één regel

Ik ben gewoon in Python en ik hou echt van de tersess van de syntaxis. Is er echter een gemakkelijkere manier om een ​​ifthenelseverklaring, zodat het op één regel past?

Bijvoorbeeld:

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

Is er een eenvoudigere manier om dit te schrijven? Ik bedoel, in objectief-c zou ik dit schrijven als:

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

Is er iets soortgelijks voor Python?

update

Ik weet dat ik in dit geval kan gebruiken count == (count + 1) % N.

Ik vraag naar de algemene syntaxis.


Antwoord 1, Autoriteit 100%

Dat is meer specifiek een ternaire operator expressie dan een als-dan, hier de Python-syntaxis

value_when_true if condition else value_when_false

Better Voorbeeld: (bedankt Mr. Burns )

'Yes' if fruit == 'Apple' else 'No'

nu met opdracht en contrast met als syntaxis

fruit = 'Apple'
isApple = True if fruit == 'Apple' else False

vs

fruit = 'Apple'
isApple = False
if fruit == 'Apple' : isApple = True

Antwoord 2, Autoriteit 12%

Bovendien kun je nog steeds de “gewone” if-syntaxis gebruiken en deze samenvoegen tot één regel met een dubbele punt.

if i > 3: print("We are done.")

of

field_plural = None
if field_plural is not None: print("insert into testtable(plural) '{0}'".format(field_plural)) 

Antwoord 3, autoriteit 7%

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

– de ternaire operator. Hoewel ik zou zeggen dat uw oplossing beter leesbaar is dan dit.


Antwoord 4, autoriteit 6%

Algemene ternaire syntaxis:

value_true if <test> else value_false

Een andere manier kan zijn:

[value_false, value_true][<test>]

bijvoorbeeld:

count = [0,N+1][count==N]

Hiermee worden beide branches geëvalueerd voordat er een wordt gekozen. Om alleen de gekozen tak te evalueren:

[lambda: value_false, lambda: value_true][<test>]()

bijv.:

count = [lambda:0, lambda:N+1][count==N]()

Antwoord 5

<execute-test-successful-condition> if <test> else <execute-test-fail-condition>

met uw codefragment zou het worden,

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

Other episodes