Mahdollinen kaksoiskappale: Python Ternary Operator
Olen juuri aloittamassa Pythonia ja pidän todella sen syntaksin tiiviydestä. Onko kuitenkin olemassa helpompaa tapaa kirjoittaa if
-then
-else
-lause niin, että se mahtuu yhdelle riville?
Esimerkiksi:
if count == N:
count = 0
else:
count = N + 1
Onko olemassa yksinkertaisempaa tapaa kirjoittaa tämä? Tarkoitan, että Objective-C:ssä kirjoittaisin tämän seuraavasti:
count = count == N ? 0 : count + 1;
Onko Pythonille jotain vastaavaa?
Päivitys
Tiedän, että tässä tapauksessa voin käyttää count == (count + 1) % N
.
Kysyn yleisestä syntaksista.
Se on tarkemmin sanottuna ternaarinen operaattori kuin if-then, tässä on python-syntaksi.
value_when_true if condition else value_when_false
parempi esimerkki: (kiitos Mr. Burns)
'Kyllä' jos hedelmä == 'Omena' muuten 'Ei'
Nyt toimeksiannon kanssa ja vastakohtana if-syntaksi
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
- ternaarinen operaattori. Tosin sanoisin, että ratkaisusi on luettavampi kuin tämä.
Yleinen ternäärinen syntaksi:
value_true if <test> else value_false
Toinen tapa voi olla:
[value_false, value_true][<test>]
esim:
count = [0,N+1][count==N]
Tämä arvioi molemmat haarat ennen kuin valitsee toisen. Arvioidaan vain valittu haara:
[lambda: value_false, lambda: value_true][<test>]()
esim:
count = [lambda:0, lambda:N+1][count==N]()