Ternär operatör i Python – vad? Hur? Varför?

I programmeringsvärlden är förmågan att förenkla kod värdefullt för både kodläsbarhet och effektivitet. Ett verktyg till ditt förfogande för att göra detta i Python är den ternära operatorn.

Den ternära Python-operatorn (eller det villkorliga uttrycket) låter dig utvärdera påståenden baserat på om ett givet villkor är sant eller falskt, allt i en enda kodrad. Det kan effektivt ersätta en multiline if-else-sats som gör din kod mer kompakt.

När vi utforskar potentialen hos ternära operatörer kommer du att upptäcka att de kan vara mycket användbara för att optimera dina program. Oavsett om det är för att förenkla beslutsfattande logik eller effektivisera din kod, kan användning av Python -ternära operatorer göra din kod mycket lättare att läsa och förstå.

Så låt oss ta en titt under huven och se vad de handlar om!

Ternär operatör i Python – vad?  Hur?  Varför?

Innehållsförteckning

Vad är en Python Ternary Operator?

Python Ternära operatorer erbjuder ett kortfattat sätt att utvärdera ett påstående baserat på om ett villkor är sant eller falskt, vilket gör din kod kompakt och lättare att läsa. Vissa människor kallar dem också betingade uttryck eller betingade operatorer.

Grundläggande syntax

Den ternära operatorn introducerades i Python 2.5 och har en enkel struktur som består av tre operander:

#demonstrate python ternary operator syntax

result = value_if_true if condition else value_if_false

Denna syntax består av tre huvuddelar:

  1. Villkoret : Detta är ett booleskt uttryck som utvärderas som antingen sant eller falskt, a

  2. value_if_true : Värdet som returneras om det booleska uttrycket är sant.

  3. value_if_false : Värdet som returneras om det booleska uttrycket är falskt.

Vanliga användningsfall

Ternära operatorer eller villkorliga uttryck används ofta för att förenkla korta if-else-satser i din kod. Här är några exempel för att illustrera hur du kan använda en ternär Python-operator:

Exempel 1: Tilldela ett värde baserat på ett villkor

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

I det här exemplet tilldelar den ternära Python-operatorn värdet " vuxen " till variabelkategorin om åldern är högre än eller lika med 18, och " mindre " annars.

Om vi ​​antar att vi valde att använda en if-else-sats istället för en Python ternär operator, skulle det se ut ungefär så här:

age = 25

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

I det här fallet kan vi se att användningen av en ternär operator gör koden mycket mer kompakt och lätt att läsa.

Exempel 2: Välj det minsta av två nummer

a = 10
b = 15

smallest = a if a < b else b

Här hjälper den ternära villkorsoperatorn dig att bestämma det minsta av två tal genom att returnera det mindre värdet mellan a och b.

Exempel 3: Tilldela minimivärdet för två variabler:

num1 = 10
num2 = 20

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

Utdata för detta exempel blir 10, eftersom den ternära operatorn utvärderar villkoret och returnerar det mindre värdet.

Exempel 4: Ta reda på om ett tal är jämnt eller udda:

num = 5

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

Utdata för det här exemplet kommer att vara Udda , eftersom villkoret utvärderas till False , och den ternära operatorn returnerar lämpligt resultat.

Dessa exempel visar hur en ternär Python-operator kan göra din kod mer kortfattad och lättare att läsa. Genom att använda den grundläggande syntaxen och förstå vanliga användningsfall kan du effektivt införliva en ternär operator i din Python-kod.

I mer praktiska tillämpningar kan du använda den i kombination med en loop för att kontrollera, utvärdera eller utföra operationer på data.

För mer effektiv datahantering kan du kolla in den här videon om hur man hanterar saknade data i Python med interpolation.

Hur man använder Python Ternary Operator

Den normala ternära operatorn if-else-syntaxen är bara ett av många sätt vi kan implementera en ternär Python-operator. Vi kan också implementera det genom att använda vanliga datastrukturer som Python-ordböcker, tupler och listor.

Låt oss titta på några av dessa metoder:

Ordbokskartläggning

Du kan emulera en Python ternär operator med ordboksmappning för att lagra resultaten för olika förhållanden. Det kan vara användbart när du har en begränsad uppsättning villkor och motsvarande resultat.

Här är ett exempel som använder ordboksmappning för att kontrollera om ett tal är jämnt eller udda:

#Implement python ternary operator with dictionary mapping

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

is_even = result[number % 2 == 0]

Programmet ovan kommer att returnera " Udda " eftersom det booleska uttrycket inom parentes evalueras till False.

Använder Tuples

Python-tupler är en ordnad, oföränderlig datastruktur som du kan använda för att implementera ternära operatorer. I grund och botten har den ternära tupeloperatorn en syntax av:

(condition_is_false, condition_is_true)[condition]

Villkoret utvärderas till antingen True eller False som i Python är lika med heltalen 1 respektive o .

Så, tuppeln returnerar vilket element som matchar det resulterande indexet. Till exempel, om villkoret utvärderas till True vilket är 1 , returnerar koden condition_is true .

Annars utvärderas den till False som är 0, och tuppeln returnerar condition_is_false . Här är ett exempel nedan:

#Implement ternary operator with tuples

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

Tuppeln kommer att lagra värdet ' a ' i variabelresultatet eftersom villkoret utvärderas till False. De flesta utvecklare gillar inte att använda detta format för ternära operatörer eftersom det kan vara lite förvirrande, vilket motverkar syftet.

Lambda funktioner

Lambdafunktioner är anonyma enkelradsfunktioner som du kan använda som ett alternativ till ternära operatorer. De låter dig utföra enkla beräkningar och returnera ett resultat baserat på ett givet villkor.

Här är ett exempel på hur du använder en lambdafunktion för att hitta maximalt två tal:

#implement python ternary operator with lambda functions

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

Lambdafunktionen returnerar a om villkoret utvärderas till True . Annars returnerar den b .

Vad är en kapslad ternär operatör?

En kapslad ternär operator är ett villkorligt uttryck med två eller flera booleska uttryck. Du kan skapa detta genom att koppla ihop två eller flera booleska villkor för att kontrollera flera villkor.

Vi kan använda dessa typer av ternära operatorer för att modellera " elif "-satser och kapslade if-else-block.

Låt oss titta 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 lägga till hakparenteser till Python-ternära operatorn om du vill efterlikna en kapslad if-else-sats. Detta är dock inte bra praxis eftersom den ternära operatorn kan bli mycket lång och oläslig.

I sådana här fall är det bättre att använda ett standard if-else-block i din kod.

Vilka är fördelarna med Python Ternary Operator?

Det finns många fördelar du får av att använda den ternära Python-operatorn i din kod. Några av dessa fördelar inkluderar:

Kodläsbarhet och korthet

Att använda den ternära Python-operatorn kan göra din kod mer koncis, så att du kan skriva villkorliga uttryck på en enda rad.

Detta är särskilt användbart när man hanterar enkla och okomplicerade förhållanden. Din kod kan vara mer läsbar och lättare att förstå, eftersom den minskar behovet av flera rader med if-else-satser.

Prestandaöverväganden

Även om den ternära operatören kan leda till mer kompakt kod, är dess inverkan på prestandan vanligtvis minimal. Pythons tolk är designad för att optimera kodexekveringen, vilket innebär att både den ternära operatorn och if-else-satserna i allmänhet har liknande prestandaegenskaper.

När du kodar, prioritera läsbarhet och underhållbarhet framför prestanda, såvida du inte arbetar med prestandakritiska applikationer.

Kom ihåg att olika situationer kräver olika tillvägagångssätt. Ibland är det fördelaktigt att använda den ternära operatorn, medan det i andra fall kan vara mer lämpligt att hålla sig till traditionella if-else-satser.

Nackdelar med Python Ternary Operator

Ternära operatorer är bra för att förenkla din kod och göra dem kompakta. Men att använda dem kan ha vissa nackdelar.

Här är några av dessa nackdelar:

Kapslade ternära operatörer kan bli komplexa

I vissa fall kan den ternära operatorn göra koden mindre läsbar, särskilt när du använder komplexa eller kapslade villkor. I dessa situationer kan det vara lämpligare att införliva konventionella if-else-satser för att upprätthålla kodens tydlighet.

Detta är särskilt sant när du försöker ersätta en kapslad if-else-sats med en ternär operator. Det resulterar sällan i ren kod.

Varje operand är ett uttryck

Alla operander eller returvärden i en ternär Python-operator är uttryck, inte satser. Att försöka använda en tilldelningssats i den ternära operatorns syntax kommer att leda till ett syntaxfel.

Du kan kolla in ett exempel på detta i koden nedan.

'Adult' if True else x = 44

Som du kan se nedan resulterar det i ett syntaxfel. I sådana här fall bör du använda ett if-else-block istället för en villkorlig operator.

Ternär operatör i Python – vad?  Hur?  Varför?

Bästa metoder och tips

När du använder den ternära operatorn i Python finns det några bästa metoder och tips som hjälper dig att skriva ren, effektiv och läsbar kod.

Se först till att ditt villkorliga uttryck är kort och koncist. Långa och komplexa förhållanden kan göra det svårt att förstå logiken bakom den ternära operatorn.

Om du upplever att du står inför ett komplext tillstånd kan det vara bättre att använda ett vanligt if-else-uttalande istället.

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

För det andra, undvik att kapsla flera ternära operatorer, vilket kan leda till förvirrande och oläsbar kod. Precis som med komplexa förhållanden, överväg att använda en if-else-sats för mer läsbarhet.

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

Slutligen, tänk på lämpliga användningsfall för den ternära operatören. Den lämpar sig mest för enkla enradiga uppdrag där både tillståndet och resultatet är lätt att förstå.

Om din kod innefattar mer komplex logik, loopar eller flera tilldelningar, är det bättre att hålla sig till traditionella if-else-satser.

Vanliga frågor om Python Ternary Operators

Här är några frågor som nya programmerare brukar ställa till oss om ternära operatorer:

Hur använder du den ternära operatorn i en retursats i Python?

Du kan använda en Python ternär operator i en funktions retursats. Allt du behöver göra är att lägga till det i returutdraget.

Här är ett exempel:

#program to check cheese age

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

Är en ternär operator snabbare än en if-else-sats i Python?

Nej, båda har liknande prestandaegenskaper. En ternär operator och en if-else-sats har båda en O(1) tidskomplexitet.


Upptäck unika insikter med LuckyTemplates TOPN-funktion

Upptäck unika insikter med LuckyTemplates TOPN-funktion

Den här bloggen innehåller LuckyTemplates TOPN DAX-funktion, som gör att du kan få unika insikter från dina data, vilket hjälper dig att fatta bättre marknadsföringsbeslut.

Datamodellering i LuckyTemplates med hjälp av stödtabeller

Datamodellering i LuckyTemplates med hjälp av stödtabeller

Lär dig några fantastiska analytiska tekniker som vi kan göra för datamodellering i LuckyTemplates med hjälp av DAX-stödtabeller.

Avancerad DAX för LuckyTemplates: Implementering av rankningslogik över unika insikter

Avancerad DAX för LuckyTemplates: Implementering av rankningslogik över unika insikter

Här dyker vi in ​​i LuckyTemplates Advanced DAX och implementerar rankningslogik för att få en mycket unik insikt. Jag visar också upp måttförgrening i det här exemplet.

LuckyTemplates What-If-parameterfunktion

LuckyTemplates What-If-parameterfunktion

Den här bloggen introducerar den nya funktionen i LuckyTemplates, analysparametern What-If. Du kommer att se hur det gör allt snabbt och enkelt för din scenarioanalys.

Använd LuckyTemplates Mät förgreningar för att kontrollera om dina marginaler ökar när intäkterna växer

Använd LuckyTemplates Mät förgreningar för att kontrollera om dina marginaler ökar när intäkterna växer

Lär dig hur du avgör om din intäktstillväxt är bra genom att kontrollera om dina marginaler ökade med hjälp av LuckyTemplates mäter förgrening.

LuckyTemplates parametrar via frågeredigerare

LuckyTemplates parametrar via frågeredigerare

Lär dig och förstå hur du kan skapa och använda LuckyTemplates-parametrar som är en kraftfull funktion i frågeredigeraren.

Runda stapeldiagram – En visualisering för din instrumentpanel

Runda stapeldiagram – En visualisering för din instrumentpanel

Denna handledning kommer att diskutera hur man skapar ett runt stapeldiagram med Charticulator. Du kommer att lära dig hur du designar dem för din LuckyTemplates-rapport.

PowerApps funktioner och formler | En introduktion

PowerApps funktioner och formler | En introduktion

Lär dig hur du använder PowerApps funktioner och formler för att förbättra funktionaliteten och ändra ett beteende i vår Power Apps canvas-app.

Pipe In R: Anslutningsfunktioner med Dplyr

Pipe In R: Anslutningsfunktioner med Dplyr

I den här handledningen kommer du att lära dig hur du kopplar ihop funktioner med hjälp av dplyr-röroperatorn i programmeringsspråket R.

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX från LuckyTemplates låter dig returnera rankningen av ett specifikt nummer i varje tabellrad som utgör en del av en lista med nummer.