Kolmiosainen operaattori Pythonissa – mitä? Miten? Miksi?

Ohjelmoinnin maailmassa koodin yksinkertaistaminen on arvokasta sekä koodin luettavuuden että tehokkuuden kannalta. Yksi käytettävissäsi oleva työkalu tämän tekemiseen Pythonissa on kolmiosainen operaattori.

Python-kolmiooperaattori (tai ehdollinen lauseke) antaa sinun arvioida lauseita sen perusteella, onko tietty ehto tosi vai epätosi, kaikki yhdellä koodirivillä. Se voi tehokkaasti korvata monirivisen if-else-lausekkeen, mikä tekee koodistasi kompaktimman.

Kun tutkimme kolmiosaisten operaattoreiden mahdollisuuksia, huomaat, että ne voivat olla erittäin hyödyllisiä ohjelmiesi optimoinnissa. Olipa kyseessä päätöksentekologiikan yksinkertaistaminen tai koodin virtaviivaistaminen, Python- kolmiooperaattoreiden tehokas käyttö voi tehdä koodistasi paljon helpompi lukea ja ymmärtää.

Joten katsotaan konepellin alle ja katsotaan, mistä niissä on kyse!

Kolmiosainen operaattori Pythonissa – mitä?  Miten?  Miksi?

Sisällysluettelo

Mikä on Python-kolmiooperaattori?

Python Ternary -operaattorit tarjoavat tiiviin tavan arvioida lausunto sen perusteella, onko ehto tosi vai epätosi, mikä tekee koodistasi kompaktin ja helpommin luettavan. Jotkut ihmiset kutsuvat niitä myös ehdollisiksi lausekkeiksi tai ehdollisiksi operaattoreiksi.

Perussyntaksi

Kolmiosainen operaattori otettiin käyttöön Python 2.5: ssä ja sillä on yksinkertainen rakenne, joka koostuu kolmesta operandista:

#demonstrate python ternary operator syntax

result = value_if_true if condition else value_if_false

Tämä syntaksi koostuu kolmesta pääosasta:

  1. Ehto : Tämä on boolen lauseke, joka arvioidaan joko tosi tai epätosi, a

  2. arvo_jos_tosi : Arvo, joka palautetaan, jos boolen lauseke on tosi.

  3. arvo_jos_epätosi : Arvo, joka palautetaan, jos boolen lauseke on epätosi.

Yleiset käyttötapaukset

Kolmiosaisia ​​operaattoreita tai ehdollisia lausekkeita käytetään usein yksinkertaistamaan koodisi lyhyitä if-else-lauseita. Tässä on muutamia esimerkkejä havainnollistamaan, kuinka voit käyttää Python-kolmiooperaattoria:

Esimerkki 1: Arvon määrittäminen ehdon perusteella

 age = 25
 
category = "adult" if age >= 18 else "minor"

Tässä esimerkissä Python-kolmiooperaattori antaa muuttujakategorialle arvon aikuinen, jos ikä on suurempi tai yhtä suuri kuin 18, ja muussa tapauksessa " alaikäinen ".

Jos päätimme käyttää if-else-lausetta Python-kolmiooperaattorin sijaan, se näyttäisi suunnilleen tältä:

age = 25

if age > 18:
   category = "Adult"
else:
   category = "Minor"

Tässä tapauksessa voimme nähdä, että kolmiosaisen operaattorin käyttö tekee koodista paljon kompaktimman ja helpommin luettavan.

Esimerkki 2: Valitaan pienin kahdesta numerosta

a = 10
b = 15

smallest = a if a < b else b

Tässä kolmiosainen ehdollinen operaattori auttaa sinua määrittämään pienimmän kahdesta luvusta palauttamalla pienemmän arvon a:n ja b:n välillä.

Esimerkki 3: Kahden muuttujan vähimmäisarvon määrittäminen:

num1 = 10
num2 = 20

min_num = num1 if num1 < num2 else num2
print(min_num)

Tämän esimerkin tulos on 10, koska kolmiosainen operaattori arvioi ehdon ja palauttaa pienemmän arvon.

Esimerkki 4: Parillisen vai parittoman luvun selvittäminen:

num = 5

result = "Even" if num % 2 == 0 else "Odd" 
print(result)

Tämän esimerkin tulos on Odd , koska ehdon arvoksi tulee epätosi , ja kolmiosainen operaattori palauttaa oikean tuloksen.

Nämä esimerkit osoittavat, kuinka Python-kolmiooperaattori voi tehdä koodistasi tiiviimmän ja helpommin luettavan. Käyttämällä perussyntaksia ja ymmärtämällä yleisiä käyttötapauksia voit tehokkaasti sisällyttää kolmiosaisen operaattorin Python-koodiisi.

Käytännöllisemmissä sovelluksissa voit käyttää sitä yhdessä silmukan kanssa tietojen tarkistamiseen, arvioimiseen tai suorittamiseen.

Tehokkaampaa tiedonkäsittelyä varten voit katsoa tämän videon Puuttuvien tietojen käsittelemisestä Pythonissa interpoloinnin avulla.

Python-kolmiooperaattorin käyttäminen

Normaali kolmiosainen operaattori if-else -syntaksi on vain yksi monista tavoista, joilla voimme toteuttaa Python-kolmiooperaattorin. Voimme toteuttaa sen myös käyttämällä yleisiä tietorakenteita, kuten Python-sanakirjoja, tupleja ja listoja.

Katsotaanpa joitain näistä menetelmistä:

Sanakirjakartoitus

Voit emuloida Python-kolmiooperaattoria sanakirjakartoituksella tallentaaksesi tulokset eri olosuhteille. Siitä voi olla hyötyä, kun sinulla on rajallinen joukko ehtoja ja niitä vastaavat tulokset.

Tässä on esimerkki sanakirjakartoituksen käyttämisestä sen tarkistamiseen, onko luku parillinen vai pariton:

#Implement python ternary operator with dictionary mapping

number = 7
result = {True: "Even", False: "Odd"}

is_even = result[number % 2 == 0]

Yllä oleva ohjelma palauttaa " Odd ", koska loogisen lausekkeen suluissa arvo on False.

Tuplesin käyttäminen

Python-tuplet ovat järjestetty, muuttumaton tietorakenne, jonka avulla voit toteuttaa kolmiosaisia ​​operaattoreita. Periaatteessa tuple ternary -operaattorilla on syntaksi:

(condition_is_false, condition_is_true)[condition]

Ehto arvioi joko tosi tai epätosi , jotka Pythonissa ovat yhtä suuret kuin kokonaisluvut 1 ja o .

Joten monikko palauttaa sen elementin, joka vastaa tuloksena olevaa indeksiä. Jos ehto esimerkiksi arvioi arvoon True , joka on 1 , koodin palautusehto_on tosi .

Muussa tapauksessa se antaa arvoksi False , joka on 0, ja monikko palauttaa ehto_on_epätosi . Alla esimerkki:

#Implement ternary operator with tuples

c = False
result = ('a', 'b')[c]

Monikko tallentaa muuttujan tulokseen arvon ' a ' , koska ehdon arvo on False. Useimmat kehittäjät eivät pidä tämän muodon käyttämisestä kolmiulotteisille operaattoreille, koska se voi olla hieman hämmentävää, mikä kumoaa tarkoituksen.

Lambdan toiminnot

Lambdafunktiot ovat anonyymejä yksirivisiä toimintoja, joita voit käyttää vaihtoehtona kolmiosaisille operaattoreille. Niiden avulla voit suorittaa yksinkertaisia ​​laskelmia ja palauttaa tuloksen tietyn ehdon perusteella.

Tässä on esimerkki lambda-funktion käyttämisestä kahden enimmäisluvun löytämiseen:

#implement python ternary operator with lambda functions

a, b = 10, 20
max_value = (lambda: a, lambda: b)[a < b]()

Lambda-funktio palauttaa a:n , jos ehdon arvo on tosi . Muussa tapauksessa se palauttaa b .

Mikä on sisäkkäinen kolmiosainen operaattori?

Sisäkkäinen kolmiosainen operaattori on ehdollinen lauseke, jossa on kaksi tai useampi boolen lauseke. Voit luoda tämän ketjuttamalla kaksi tai useampi boolen ehto yhteen tarkistaaksesi useita ehtoja.

Voimme käyttää tämän tyyppisiä kolmiosaisia ​​operaattoreita mallintaaksemme “ elif ”-lauseita ja sisäkkäisiä if-else-lohkoja.

Katsotaanpa kolmiosaista operaattoria.

age = 21

#Normal elif statement
if age< 21:
   print('Child')
elif age< 25:
   print ('young adult')
else:
   print('Adult')

#elif statement as a ternary operator
print('Child') if age < 18 else print('Young adult') if age <21 else print ('Old Person')

#Output: 'Young Adult'

Voit lisätä Python-kolmiooperaattoriin hakasulkeet, jos haluat jäljitellä sisäkkäistä if-else-käskyä. Tämä ei kuitenkaan ole hyvä käytäntö, koska kolmiosaisesta operaattorista voi tulla hyvin pitkä ja lukukelvoton.

Tällaisissa tapauksissa sinun on parempi käyttää koodissasi tavallista if-else-lohkoa.

Mitkä ovat Python-kolmiooperaattorin edut?

Python-kolmiooperaattorin käyttämisestä koodissasi on monia etuja. Joitakin näistä eduista ovat:

Koodin luettavuus ja lyhyys

Python-kolmiooperaattorin käyttäminen voi tehdä koodistasi tiiviimmän, jolloin voit kirjoittaa ehdollisia lausekkeita yhdelle riville.

Tämä on erityisen hyödyllistä yksinkertaisissa ja yksinkertaisissa olosuhteissa. Koodisi voi olla luettavampaa ja helpompi ymmärtää, koska se vähentää useiden if-else-lausekkeiden tarvetta.

Suorituskykynäkökohdat

Vaikka kolmiosainen operaattori voi johtaa kompaktimpaan koodiin, sen vaikutus suorituskykyyn on yleensä minimaalinen. Pythonin tulkki on suunniteltu optimoimaan koodin suorittaminen, mikä tarkoittaa, että sekä kolmiosaisella operaattorilla että if-else-lauseilla on yleensä samanlaiset suorituskykyominaisuudet.

Koodia käytettäessä aseta luettavuus ja ylläpidettävyys suorituskyvyn edelle, ellet työskentele suorituskyvyn kannalta kriittisten sovellusten kanssa.

Muista, että erilaiset tilanteet vaativat erilaisia ​​lähestymistapoja. Joskus kolmiosaisen operaattorin käyttäminen on hyödyllistä, kun taas toisissa tapauksissa perinteisissä if-else-lauseissa pitäminen voi olla sopivampaa.

Python-kolmiooperaattorin haitat

Kolmiosaiset operaattorit ovat hyviä yksinkertaistamaan koodia ja tekemään niistä kompakteja. Niiden käytössä voi kuitenkin olla joitain haittoja.

Tässä on joitain näistä haitoista:

Sisäkkäiset kolmiosaiset operaattorit voivat olla monimutkaisia

Joissakin tapauksissa kolmiosainen operaattori voi tehdä koodista vähemmän luettavan, erityisesti käytettäessä monimutkaisia ​​tai sisäkkäisiä ehtoja. Näissä tilanteissa tavanomaisten if-else -lauseiden sisällyttäminen voi olla sopivampaa koodin selkeyden ylläpitämiseksi.

Tämä pätee erityisesti silloin, kun yrität korvata sisäkkäisen if-else-käskyn kolmiosaisella operaattorilla. Se johtaa harvoin puhtaaseen koodiin.

Jokainen operandi on lauseke

Kaikki Python-kolmiooperaattorin operandit tai palautusarvot ovat lausekkeita, eivät lausekkeita. Yritetään käyttää osoituslausetta kolmiosaisen operaattorin syntaksin sisällä johtaa syntaksivirheeseen.

Voit tarkistaa esimerkin tästä alla olevasta koodista.

'Adult' if True else x = 44

Kuten alla näet, se johtaa syntaksivirheeseen. Tällaisissa tapauksissa sinun tulee käyttää if-else-lohkoa ehdollisen operaattorin sijaan.

Kolmiosainen operaattori Pythonissa – mitä?  Miten?  Miksi?

Parhaat käytännöt ja vinkit

Kun käytät Pythonissa kolmiosaista operaattoria, on olemassa joitakin parhaita käytäntöjä ja vinkkejä, joiden avulla voit kirjoittaa puhdasta, tehokasta ja luettavaa koodia.

Varmista ensin, että ehdollinen lauseke on lyhyt ja ytimekäs. Pitkät ja monimutkaiset ehdot voivat vaikeuttaa kolmiosaisen operaattorin taustalla olevan logiikan ymmärtämistä.

Jos kohtaat monimutkaisen tilan, saattaa olla parempi käyttää sen sijaan tavallista if-else-lausetta.

#demonstrate nested ternary operator
# Good example 
result = "positive" if number >= 0 else "negative" 


# Bad example 
result = (a + b if (x > 10 and y > 20) else c + d) if (z > 30 and p > 40) else ...

Toiseksi, vältä useiden kolmiosaisten operaattoreiden sisäkkäisyyttä, mikä voi johtaa hämmentävään ja lukukelvottomaan koodiin. Kuten monimutkaisissa olosuhteissa, harkitse if-else-lausekkeen käyttöä luettavuuden parantamiseksi.

# Good example 

x = A if condition1 else B if condition2 else C 

# Bad example 
x = A if condition1 else (B if condition2 else (C if condition3 else ...)) 

Muista lopuksi kolmiosaisen operaattorin asianmukaiset käyttötapaukset. Se soveltuu parhaiten yksinkertaisiin yksirivisiin tehtäviin, joissa ehto ja tulos ovat molemmat helposti ymmärrettäviä.

Jos koodisi sisältää monimutkaisempaa logiikkaa, silmukoita tai useita tehtäviä, on parempi pysyä perinteisissä if-else-lauseissa.

Usein kysytyt kysymykset Python-kolmiooperaattoreista

Tässä on joitain kysymyksiä, joita uudet ohjelmoijat yleensä kysyvät meiltä kolmioperaattoreista:

Kuinka käytät kolmiosaista operaattoria paluulauseessa Pythonissa?

Voit käyttää Python-kolmiooperaattoria funktion return-lauseessa. Sinun tarvitsee vain lisätä se palautuslausekkeeseen.

Tässä on esimerkki:

#program to check cheese age

def is_legal(age):
  return 'legal' if age > 18 else 'Not legal'

Onko kolmiosainen operaattori nopeampi kuin if-else-lause Pythonissa?

Ei, molemmilla on samanlaiset suorituskykyominaisuudet. Kolmiosaisella operaattorilla ja if-else-lauseella on molemmilla O(1)-aikakompleksisuus.


Suhde- ja taajuustaulukot Excelissä

Suhde- ja taajuustaulukot Excelissä

Aioin sukeltaa Excelin taajuustaulukoihin sekä suhteellisiin taulukoihin. Selvitä, mitä ne ovat ja milloin niitä käytetään.

Kuinka asentaa DAX Studio & Tabular Editor LuckyTemplatesissa

Kuinka asentaa DAX Studio & Tabular Editor LuckyTemplatesissa

Opi lataamaan ja asentamaan DAX Studio ja Tabular Editor 3 ja miten ne määritetään käytettäväksi LuckyTemplatesissa ja Excelissä.

LuckyTemplates -muotokartan visualisointi tilaanalyysiin

LuckyTemplates -muotokartan visualisointi tilaanalyysiin

Tämä blogi sisältää Shape Map -visualisoinnin tilaanalyysiä varten LuckyTemplatesissa. Näytän sinulle, kuinka voit käyttää tätä visualisointia tehokkaasti sen ominaisuuksien ja elementtien kanssa.

LuckyTemplatesin talousraportointi: tulosten kohdentaminen malleihin jokaisella rivillä

LuckyTemplatesin talousraportointi: tulosten kohdentaminen malleihin jokaisella rivillä

Tässä opetusohjelmassa esittelen ainutlaatuisen idean talousraportoinnista, joka allokoi tulokset LuckyTemplatesin sisällä olevien taulukkopohjien ennalta määrittämiseen.

DAX-mittaukset LuckyTemplatesissa käyttämällä mittahaaroitusta

DAX-mittaukset LuckyTemplatesissa käyttämällä mittahaaroitusta

Luo DAX-suureita LuckyTemplatesissa käyttämällä olemassa olevia suureita tai kaavoja. Tätä kutsun mittahaaroitustekniikaksi.

Tehokkain toimintopuhelu LuckyTemplatesissa

Tehokkain toimintopuhelu LuckyTemplatesissa

Tässä blogissa tutustu LuckyTemplates-tietojoukkoon, tehokkaimpaan funktiokutsuun, joka tuo tuhansia M- ja DAX-funktioita sormiesi ulottuville.

Datamallinnustekniikat DAX-mittausten järjestämiseen

Datamallinnustekniikat DAX-mittausten järjestämiseen

Tämän päivän opetusohjelmassa jaan muutamia datamallinnustekniikoita DAX-mittausten järjestämiseksi paremmin tehokkaamman työnkulun aikaansaamiseksi.

LuckyTemplates Financial Dashboard: Täydelliset taulukon mukautusvinkit

LuckyTemplates Financial Dashboard: Täydelliset taulukon mukautusvinkit

LuckyTemplates on loistava työkalu talousraportointiin. Tässä on opetusohjelma räätälöityjen taulukoiden luomisesta LuckyTemplates-talouden hallintapaneelillesi.

Power Queryn kielivirran parhaat käytännöt

Power Queryn kielivirran parhaat käytännöt

Tässä opetusohjelmassa keskustellaan Power Query Language Flowsta ja siitä, kuinka se voi auttaa luomaan sujuvan ja tehokkaan dataraportin.

LuckyTemplates mukautetut kuvakkeet | PBI-visualisointitekniikka

LuckyTemplates mukautetut kuvakkeet | PBI-visualisointitekniikka

Keskustelen yhdestä suosikkitekniikoistani mukautettujen LuckyTemplates-kuvakkeiden ympärillä, joka käyttää mukautettuja kuvakkeita dynaamisella tavalla LuckyTemplates-visuaaleissa.