Ik ben gewoon in Python en ik hou echt van de tersess van de syntaxis. Is er echter een gemakkelijkere manier om een if
– then
– else
verklaring, 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