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.


Skapa en datumtabell i LuckyTemplates

Skapa en datumtabell i LuckyTemplates

Ta reda på varför det är viktigt att ha en dedikerad datumtabell i LuckyTemplates och lär dig det snabbaste och mest effektiva sättet att göra det.

LuckyTemplates mobilrapporteringstips och tekniker

LuckyTemplates mobilrapporteringstips och tekniker

Denna korta handledning belyser LuckyTemplates mobilrapporteringsfunktion. Jag ska visa dig hur du kan utveckla rapporter effektivt för mobila enheter.

Professional Service Analytics-rapporter i LuckyTemplates

Professional Service Analytics-rapporter i LuckyTemplates

I denna LuckyTemplates Showcase går vi igenom rapporter som visar professionell serviceanalys från ett företag som har flera kontrakt och kundengagemang.

Microsoft Power Platform-uppdateringar | Microsoft Ignite 2021

Microsoft Power Platform-uppdateringar | Microsoft Ignite 2021

Gå igenom de viktigaste uppdateringarna för Power Apps och Power Automate och deras fördelar och konsekvenser för Microsoft Power Platform.

Vanliga SQL-funktioner: En översikt

Vanliga SQL-funktioner: En översikt

Upptäck några vanliga SQL-funktioner som vi kan använda som sträng, datum och några avancerade funktioner för att bearbeta eller manipulera data.

LuckyTemplates Skapa mall: Guide och tips

LuckyTemplates Skapa mall: Guide och tips

I den här handledningen kommer du att lära dig hur du skapar din perfekta LuckyTemplates-mall som är konfigurerad efter dina behov och preferenser.

Fältparametrar och små multiplar i LuckyTemplates

Fältparametrar och små multiplar i LuckyTemplates

I den här bloggen kommer vi att visa hur man lager fältparametrar med små multiplar för att skapa otroligt användbara insikter och bilder.

LuckyTemplates Rank och anpassad gruppering

LuckyTemplates Rank och anpassad gruppering

I den här bloggen kommer du att lära dig hur du använder LuckyTemplates ranknings- och anpassade grupperingsfunktioner för att segmentera en exempeldata och rangordna den enligt kriterier.

Visar kumulativ total endast upp till ett visst datum i LuckyTemplates

Visar kumulativ total endast upp till ett visst datum i LuckyTemplates

I den här handledningen kommer jag att täcka en specifik teknik kring hur man visar Kumulativ total endast upp till ett specifikt datum i dina bilder i LuckyTemplates.

Punktdiagram: Avancerade anpassade bilder för LuckyTemplates

Punktdiagram: Avancerade anpassade bilder för LuckyTemplates

Lär dig hur du skapar och anpassar punktdiagram i LuckyTemplates, som huvudsakligen används för att mäta prestanda mot mål eller tidigare år.