Mogelijk duplicaat: Python Ternary Operator
Ik begin net in Python en ik hou echt van de strakheid van de syntaxis. Maar is er een makkelijkere manier om een if
-then
-else
verklaring te schrijven 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 Objective-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 count == (count + 1) % N
kan gebruiken.
Ik'm vraag naar de algemene syntaxis.
Dat's meer specifiek een ternaire operator expressie dan een als-dan, hier's de python syntaxis
value_when_true if condition else value_when_false
Beter voorbeeld: (met dank aan Mr. Burns)
'Ja' als fruit == 'Appel' anders 'Nee'
Nu met opdracht en contrast met if syntaxis
fruit = 'Apple'
isApple = True if fruit == 'Apple' else False
vs
fruit = 'Apple'
isApple = False
if fruit == 'Apple' : isApple = True
count = 0 if count == N else N+1
- de ternaire operator. Hoewel ik zou zeggen dat je oplossing leesbaarder is dan dit.
Algemene ternaire syntaxis:
value_true if <test> else value_false
Een andere manier kan zijn:
[value_false, value_true][<test>]
b.v:
count = [0,N+1][count==N]
Dit evalueert beide takken alvorens er een te kiezen. Om alleen de gekozen tak te evalueren:
[lambda: value_false, lambda: value_true][<test>]()
b.v.:
count = [lambda:0, lambda:N+1][count==N]()