1. Mis on Pythoni kolmikoperaator?
Tingimuslause lühike kirjutamisviis Pythonis
Pythoni kolmikoperaator (Ternary Operator) on mugav süntaks, mis võimaldab tingimuslause kirjutada ühele reale. Kui kasutada tavalist if-else
-lauset, tuleb koodi kirjutada mitmel real, kuid kolmikoperaatori abil saab selle kokku võtta lühemalt. See muudab koodi lihtsamaks ja loetavamaks. Vaatame kõigepealt põhistruktuuri.
result = väärtus1 if tingimus else väärtus2
Ülaltoodud süntaksis tagastatakse väärtus1
, kui tingimus on tõene, ja väärtus2
, kui see on väär. Nii saab lühikese koodiga teha otsuse ja täita sobiva tegevuse.
Kolmikoperaatori põhikasutus
Näiteks, vaatame koodi, mis määrab, kas arv on positiivne või negatiivne.
x = 5
result = "positiivne" if x > 0 else "negatiivne"
print(result)
Selles koodis hinnatakse x
väärtust: kui see on suurem kui 0, siis väljastatakse „positiivne“, vastasel juhul „negatiivne“. Selliste lihtsate tingimuste puhul on kolmikoperaator väga tõhus.

2. Kolmikoperaatori kasutamise eelised
Koodi lihtsus ja paremini loetav struktuur
Kolmikoperaatori suurim eelis on see, et koodi saab kirjutada lühemalt. Eriti lühikeste tingimuslausete puhul võib tavaline if-else
-struktuur muutuda liiga pikaks. Kolmikoperaatoriga saab tingimused esitada ühel real, muutes koodi loetavamaks.
age = 20
status = "täisealine" if age >= 18 else "alaealine"
print(status)
Ülaltoodud näites hinnatakse age
: kui see on vähemalt 18, siis väljastatakse „täisealine“, muidu „alaealine“. Üksainus rida muudab koodi arusaadavaks ja kergesti jälgitavaks.
Kiirem töötlemine lihtsate tingimuste korral
Mõnikord on kolmikoperaator ka veidi kiirem kui tavaline if-else
. Seda tänu kompaktsele süntaksile. Suurtes programmides kiiruse vahe tavaliselt ei mõjuta, kuid väikestes lihtsates olukordades võib see olla kasulik.
3. Kolmikoperaatori näited
Põhikasutus
Siin on mõned praktilised näited kolmikoperaatori kasutamisest.
number = -3
result = "positiivne" if number > 0 else "negatiivne"
print(result) # väljund: negatiivne
See näide kontrollib, kas number
on positiivne või negatiivne. Tänu kolmikoperaatorile saab selle ühe reaga kirja panna.
Pesastatud kolmikoperaator
Kui tingimusi on mitu, võib kolmikoperaatorit kasutada pesastatult. Näiteks, kas arv on positiivne, negatiivne või null.
x = 0
result = "positiivne" if x > 0 else "negatiivne" if x < 0 else "null"
print(result) # väljund: null
Pesastatud kolmikoperaator muudab keerulised tingimused lühemaks, kuid liiga palju pesastamist halvendab loetavust.
4. Kolmikoperaator ja listikomprehensioon
Efektiivne loenditöötlus
Kolmikoperaator on eriti kasulik koos listikomprehensiooniga, kui soovite elemente töödelda tingimuse alusel.
numbers = [i * 2 if i % 2 == 0 else i for i in range(10)]
print(numbers) # väljund: [0, 1, 4, 3, 8, 5, 12, 7, 16, 9]
Selles näites korrutatakse paarisarvud kahega ja teised jäävad muutmata. See kombinatsioon muudab koodi lühikeseks ja efektiivseks.
5. Lambda-funktsioonid ja kolmikoperaator
Kolmikoperaatori kasutamine lambdas
Kolmikoperaator sobib hästi ka koos anonüümsete funktsioonidega (lambda). See võimaldab lihtsa tingimuse lühidalt funktsioonis määrata.
f = lambda x: "paaris" if x % 2 == 0 else "paaritu"
print(f(5)) # väljund: paaritu
Selles näites otsustab f
, kas arv on paaris või paaritu. Kolmikoperaatoriga saab funktsiooni kirjutada väga lühidalt.

6. Kolmikoperaatori kasutamise ohud
Pesastamise tõttu halvenenud loetavus
Liigne pesastamine muudab koodi raskesti loetavaks. Liiga keerulised tingimused ühel real võivad olla raskesti mõistetavad.
result = "A" if score >= 90 else "B" if score >= 80 else "C" if score >= 70 else "D"
Sellisel juhul on parem kasutada tavalist if-else
-struktuuri.
7. Parimad tavad
Kasutada lihtsate tingimuste jaoks
Kolmikoperaator sobib kõige paremini lihtsate tingimuste jaoks. Keeruliste puhul tasub kasutada tavalist if-else
-lausungit.
x = 10
result = "positiivne" if x > 0 else "negatiivne"
Lühikesed tingimused muutuvad nii kiiresti arusaadavaks ja selgeks.
8. Jõudlus
Mõju jõudlusele
Kolmikoperaator võib olla veidi kiirem kui tavaline if-else
, kuid keeruliste pesastatud tingimuste puhul võib see hoopis aeglustada.
result = "A" if score >= 90 else "B" if score >= 80 else "C" if score >= 70 else "D"
Liiga keeruliste juhtumite korral tuleks eelistada tavalist if-else
-struktuuri.
Ettevaatus keeruliste tingimuste korral
Kui tingimused sisaldavad kalleid funktsioonikutsungeid, võib kolmikoperaator mõlemal poolel need käivitada. Sellisel juhul tasub eelistada tavalist if-else
-kirjutist.
result = kallis_funktsioon() if condition else default_value
9. Korduma kippuvad küsimused
Millal kasutada kolmikoperaatorit?
See sobib lühikeste tingimuste jaoks, näiteks loendikomprehensioonis või lambda-funktsioonides.
result = "pluss" if number > 0 else "miinus"
Millal vältida?
Kui tingimused on liiga keerulised või mitmekihilised, kaotab kood loetavuse. Sellisel juhul tasub kasutada if-else
-lausungit.
Kumb on parem, kolmikoperaator või if-else
?
Lihtsate tingimuste jaoks on kolmikoperaator parem, kuid keeruliste puhul tuleb eelistada klassikalist if-else
-struktuuri.