Ternær operatør i Python – hvad? Hvordan? Hvorfor?

I programmeringsverdenen er evnen til at forenkle kode værdifuldt for både kodelæsbarhed og effektivitet. Et værktøj til din rådighed til at gøre dette i Python er den ternære operatør.

Den ternære Python-operator (eller betingede udtryk) giver dig mulighed for at evaluere udsagn baseret på, om en given betingelse er sand eller falsk, alt sammen i en enkelt kodelinje. Det kan effektivt erstatte en multiline if-else-sætning, hvilket gør din kode mere kompakt.

Når vi udforsker potentialet for ternære operatører, vil du opdage, at de kan være meget nyttige til at optimere dine programmer. Uanset om det er for at forenkle beslutningslogikken eller strømline din kode, kan brug af Python- ternære operatører effektivt gøre din kode meget lettere at læse og forstå.

Så lad os tage et kig under motorhjelmen og se, hvad de handler om!

Ternær operatør i Python – hvad?  Hvordan?  Hvorfor?

Indholdsfortegnelse

Hvad er en Python ternær operatør?

Python ternære operatorer tilbyder en kortfattet måde at evaluere en erklæring baseret på, om en betingelse er sand eller falsk, hvilket gør din kode kompakt og lettere at læse. Nogle mennesker kalder dem også betingede udtryk eller betingede operatorer.

Grundlæggende syntaks

Den ternære operator blev introduceret i Python 2.5 og har en simpel struktur bestående af tre operander:

#demonstrate python ternary operator syntax

result = value_if_true if condition else value_if_false

Denne syntaks består af tre hoveddele:

  1. Betingelsen : Dette er et boolesk udtryk, der vurderes som enten sandt eller falsk, en

  2. value_if_true : Værdien, der returneres, hvis det booleske udtryk er sandt.

  3. value_if_false : Værdien, der returneres, hvis det boolske udtryk er falsk.

Almindelige anvendelsestilfælde

Ternære operatorer eller betingede udtryk bruges ofte til at forenkle korte if-else-sætninger i din kode. Her er et par eksempler for at illustrere, hvordan du kan anvende en ternær Python-operator:

Eksempel 1: Tildeling af en værdi baseret på en betingelse

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

I dette eksempel tildeler den ternære Python-operator værdien " voksen " til variabelkategorien , hvis alderen er større end eller lig med 18, og " mindre " ellers.

Hvis vi antager, at vi valgte at bruge en if-else-sætning i stedet for en ternær Python-operator, ville det se sådan ud:

age = 25

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

I dette tilfælde kan vi se, at brugen af ​​en ternær operator gør koden meget mere kompakt og let at læse.

Eksempel 2: Valg af det mindste af to tal

a = 10
b = 15

smallest = a if a < b else b

Her hjælper den ternære betingede operator dig med at bestemme det mindste af to tal ved at returnere den mindste værdi mellem a og b.

Eksempel 3: Tildeling af minimumsværdien af ​​to variable:

num1 = 10
num2 = 20

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

Outputtet for dette eksempel vil være 10, da den ternære operator evaluerer betingelsen og returnerer den mindre værdi.

Eksempel 4: Find ud af, om et tal er lige eller ulige:

num = 5

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

Outputtet for dette eksempel vil være ulige , da betingelsen evalueres til Falsk , og den ternære operator returnerer det relevante resultat.

Disse eksempler viser, hvordan en ternær Python-operator kan gøre din kode mere kortfattet og lettere at læse. Ved at bruge den grundlæggende syntaks og forstå almindelige use cases, kan du effektivt inkorporere en ternær operator i din Python-kode.

I mere praktiske applikationer kan du bruge det sammen med en loop til at kontrollere, evaluere eller udføre operationer på data.

For mere effektiv datahåndtering kan du tjekke denne video om, hvordan man håndterer manglende data i Python med interpolation.

Sådan bruges Python Ternary Operator

Den normale ternære operator if-else syntaks er blot en af ​​mange måder, vi kan implementere en Python ternær operator på. Vi kan også implementere det ved at bruge almindelige datastrukturer som Python-ordbøger, tupler og lister.

Lad os se på nogle af disse metoder:

Ordbogskortlægning

Du kan emulere en Python ternær operator med ordbogsmapping for at gemme resultaterne for forskellige forhold. Det kan være nyttigt, når du har et begrænset sæt betingelser og tilsvarende resultater.

Her er et eksempel, der bruger ordbogstilknytning til at kontrollere, om et tal er lige eller ulige:

#Implement python ternary operator with dictionary mapping

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

is_even = result[number % 2 == 0]

Ovenstående program vil returnere " Ulige ", da det boolske udtryk i parentes evalueres til Falsk.

Brug af Tuples

Python-tuples er en ordnet, uforanderlig datastruktur, som du kan bruge til at implementere ternære operatorer. Grundlæggende har den ternære tuple-operator en syntaks på:

(condition_is_false, condition_is_true)[condition]

Betingelsen evalueres til enten True eller False , som i Python er lig med henholdsvis hele tallene 1 og o .

Så tuple returnerer det element, der matcher det resulterende indeks. For eksempel, hvis betingelsen evalueres til True , hvilket er 1 , returnerer koden condition_is true .

Ellers evalueres den til False , som er 0, og tuplen returnerer condition_is_false . Her er et eksempel nedenfor:

#Implement ternary operator with tuples

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

Tuplet gemmer værdien ' a ' i variabelresultatet, da betingelsen evalueres til Falsk. De fleste udviklere kan ikke lide at bruge dette format til ternære operatører, da det kan være lidt forvirrende, hvilket besejrer formålet.

Lambda funktioner

Lambda-funktioner er anonyme enkeltlinje-funktioner, som du kan bruge som et alternativ til ternære operatører. De giver dig mulighed for at udføre simple beregninger og returnere et resultat baseret på en given betingelse.

Her er et eksempel på brug af en lambda-funktion til at finde det maksimale af to tal:

#implement python ternary operator with lambda functions

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

Lambda-funktionen returnerer a , hvis betingelsen evalueres til Sand . Ellers returnerer den b .

Hvad er en indlejret ternær operatør?

En indlejret ternær operator er et betinget udtryk med to eller flere booleske udtryk. Du kan oprette dette ved at kæde to eller flere booleske betingelser sammen for at kontrollere flere betingelser.

Vi kan bruge disse typer ternære operatorer til at modellere " elif "-sætninger og indlejrede if-else-blokke.

Lad os se på en ternær operator.

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'

Du kan tilføje parenteser til den ternære Python-operator, hvis du vil efterligne en indlejret if-else-sætning. Dette er dog ikke god praksis, da den ternære operator kan blive meget lang og ulæselig.

I tilfælde som dette er det bedre at bruge en standard if-else-blok i din kode.

Hvad er fordelene ved Python Ternary Operator?

Der er mange fordele, du får ved at bruge den ternære Python-operator i din kode. Nogle af disse fordele omfatter:

Kodelæsbarhed og korthed

Brug af den ternære Python-operator kan gøre din kode mere kortfattet, så du kan skrive betingede udtryk på en enkelt linje.

Dette er især nyttigt, når du har at gøre med enkle og ligetil betingelser. Din kode kan være mere læsbar og lettere at forstå, da den reducerer behovet for flere linjer med if-else-sætninger.

Ydelsesovervejelser

Selvom den ternære operatør kan føre til mere kompakt kode, er dens indvirkning på ydeevnen normalt minimal. Pythons fortolker er designet til at optimere kodeudførelsen, hvilket betyder, at både den ternære operator og if-else-sætninger generelt har lignende ydeevnekarakteristika.

Når du koder, skal du prioritere læsbarhed og vedligeholdelse frem for ydeevne, medmindre du arbejder med præstationskritiske applikationer.

Husk, at forskellige situationer kræver forskellige tilgange. Nogle gange er det en fordel at bruge den ternære operator, mens det i andre tilfælde kan være mere passende at holde sig til traditionelle if-else-udsagn.

Ulemper ved Python Ternary Operator

Ternære operatører er gode til at forenkle din kode og gøre dem kompakte. Brugen af ​​dem kan dog have nogle ulemper.

Her er nogle af disse ulemper:

Indlejrede ternære operatører kan blive komplekse

I nogle tilfælde kan den ternære operator gøre koden mindre læsbar, især når der bruges komplekse eller indlejrede betingelser. I disse situationer kan det være mere passende at inkorporere konventionelle if-else-sætninger for at bevare kodens klarhed.

Dette gælder især, når du forsøger at erstatte en indlejret if-else-sætning med en ternær operator. Det resulterer sjældent i ren kode.

Hver operand er et udtryk

Alle operander eller returværdier i en ternær Python-operator er udtryk, ikke sætninger. Forsøg på at bruge en tildelingssætning inde i den ternære operators syntaks vil føre til en syntaksfejl.

Du kan se et eksempel på dette i koden nedenfor.

'Adult' if True else x = 44

Som du kan se nedenfor, resulterer det i en syntaksfejl. I tilfælde som dette bør du bruge en if-else-blok i stedet for en betinget operator.

Ternær operatør i Python – hvad?  Hvordan?  Hvorfor?

Bedste praksis og tips

Når du bruger den ternære operator i Python, er der nogle bedste fremgangsmåder og tips til at hjælpe dig med at skrive ren, effektiv og læsbar kode.

For det første skal du sikre dig, at dit betingede udtryk er kort og præcist. Lange og komplekse forhold kan gøre det vanskeligt at forstå logikken bag den ternære operatør.

Hvis du oplever, at du står over for en kompleks tilstand, kan det være bedre at bruge en almindelig hvis-else-sætning i stedet.

#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 ...

For det andet skal du undgå at indlejre flere ternære operatorer, hvilket kan føre til forvirrende og ulæselig kode. Ligesom med komplekse forhold kan du overveje at bruge en if-else-sætning for mere læsbarhed.

# 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 ...)) 

Til sidst skal du være opmærksom på de passende brugstilfælde for den ternære operatør. Den er mest velegnet til simple enkeltlinjede opgaver, hvor både tilstanden og resultatet er let at forstå.

Hvis din kode involverer mere kompleks logik, loops eller flere opgaver, er det bedre at holde sig til traditionelle if-else-sætninger.

Ofte stillede spørgsmål om Python ternære operatører

Her er nogle spørgsmål, som nye programmører normalt stiller os om ternære operatører:

Hvordan bruger du den ternære operator i en returerklæring i Python?

Du kan bruge en Python ternær operator i en funktions retursætning. Alt du skal gøre er at tilføje det til returopgørelsen.

Her er et eksempel:

#program to check cheese age

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

Er en ternær operator hurtigere end en if-else-sætning i Python?

Nej, begge har lignende præstationskarakteristika. En ternær operator og en if-else-sætning har begge en O(1)-tidskompleksitet.


Oplev unik indsigt ved hjælp af LuckyTemplates TOPN-funktion

Oplev unik indsigt ved hjælp af LuckyTemplates TOPN-funktion

Denne blog indeholder LuckyTemplates TOPN DAX-funktionen, som giver dig mulighed for at få unik indsigt fra dine data, hvilket hjælper dig med at træffe bedre markedsføringsbeslutninger.

Datamodellering i LuckyTemplates ved hjælp af understøttende tabeller

Datamodellering i LuckyTemplates ved hjælp af understøttende tabeller

Lær nogle fantastiske analytiske teknikker, som vi kan gøre til datamodellering i LuckyTemplates ved hjælp af DAX-understøttende tabeller.

Avanceret DAX til LuckyTemplates: Implementering af rangeringslogik på tværs af unikke indsigter

Avanceret DAX til LuckyTemplates: Implementering af rangeringslogik på tværs af unikke indsigter

Her dykker vi ned i LuckyTemplates Advanced DAX og implementerer rangeringslogik for at få en meget unik indsigt. Jeg viser også måleforgrening i dette eksempel.

LuckyTemplates What-If-parameterfunktion

LuckyTemplates What-If-parameterfunktion

Denne blog introducerer den nye funktion i LuckyTemplates, What-If-analyseparameteren. Du vil se, hvordan det gør alt hurtigt og nemt til din scenarieanalyse.

Brug LuckyTemplates Mål forgrening for at kontrollere, om dine avancer udvides, efterhånden som omsætningen vokser

Brug LuckyTemplates Mål forgrening for at kontrollere, om dine avancer udvides, efterhånden som omsætningen vokser

Lær, hvordan du afgør, om din omsætningsvækst er god ved at kontrollere, om dine avancer er udvidet ved hjælp af LuckyTemplates, der måler forgrening.

LuckyTemplates-parametre via forespørgselseditor

LuckyTemplates-parametre via forespørgselseditor

Lær og forstå, hvordan du kan oprette og bruge LuckyTemplates Parameters, som er en kraftfuld funktion i Query Editor.

Rundt søjlediagram – en visualisering til dit dashboard

Rundt søjlediagram – en visualisering til dit dashboard

Denne vejledning vil diskutere om oprettelse af et rundt søjlediagram ved hjælp af Charticulator. Du lærer, hvordan du designer dem til din LuckyTemplates-rapport.

PowerApps funktioner og formler | En introduktion

PowerApps funktioner og formler | En introduktion

Lær, hvordan du bruger PowerApps-funktioner og -formler til at forbedre funktionaliteten og ændre adfærd i vores Power Apps-lærredsapp.

Pipe In R: Tilslutningsfunktioner med Dplyr

Pipe In R: Tilslutningsfunktioner med Dplyr

I denne øvelse lærer du, hvordan du kæder funktioner sammen ved hjælp af dplyr-røroperatoren i programmeringssproget R.

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX fra LuckyTemplates giver dig mulighed for at returnere rangeringen af ​​et specifikt tal i hver tabelrække, der udgør en del af en liste over tal.