Ternární operátor v Pythonu – co? Jak? Proč?

Ve světě programování je schopnost zjednodušit kód cenná jak pro čitelnost kódu, tak pro efektivitu. Jedním z nástrojů, který máte v Pythonu k dispozici, je ternární operátor.

Pythonský ternární operátor (nebo podmíněný výraz) umožňuje vyhodnotit příkazy na základě toho, zda je daná podmínka pravdivá nebo nepravdivá, to vše na jediném řádku kódu. Dokáže efektivně nahradit víceřádkový příkaz if-else, díky čemuž je váš kód kompaktnější.

Když prozkoumáme potenciál ternárních operátorů, zjistíte, že mohou být velmi užitečné pro optimalizaci vašich programů. Ať už jde o zjednodušení logiky rozhodování nebo zefektivnění kódu, efektivní používání ternárních operátorů Pythonu může váš kód mnohem snáze přečíst a pochopit.

Pojďme se tedy podívat pod pokličku a podívat se, o čem jsou!

Ternární operátor v Pythonu – co?  Jak?  Proč?

Obsah

Co je ternární operátor Pythonu?

Ternární operátory Pythonu nabízejí stručný způsob, jak vyhodnotit prohlášení na základě toho, zda je podmínka pravdivá nebo nepravdivá, takže váš kód je kompaktní a snáze čitelný. Někteří lidé je také nazývají podmíněné výrazy nebo podmíněné operátory.

Základní syntaxe

Ternární operátor byl zaveden v Pythonu 2.5 a má jednoduchou strukturu sestávající ze tří operandů:

#demonstrate python ternary operator syntax

result = value_if_true if condition else value_if_false

Tato syntaxe se skládá ze tří hlavních částí:

  1. Podmínka : Toto je booleovský výraz vyhodnocený jako pravdivý nebo nepravdivý, a

  2. value_if_true : Hodnota, která se vrátí, pokud je logický výraz pravdivý.

  3. value_if_false : Hodnota, která bude vrácena, pokud je booleovský výraz nepravdivý.

Běžné případy použití

Ternární operátory nebo podmíněné výrazy se často používají ke zjednodušení krátkých příkazů if-else ve vašem kódu. Zde je několik příkladů, které ilustrují, jak můžete použít ternární operátor Pythonu:

Příklad 1: Přiřazení hodnoty na základě podmínky

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

V tomto příkladu ternární operátor Pythonu přiřadí kategorii proměnné hodnotu „ dospělý “ , pokud je věk větší nebo roven 18, a jinak „ nezletilý “.

Za předpokladu, že jsme se rozhodli použít příkaz if-else místo ternárního operátoru Pythonu, vypadalo by to asi takto:

age = 25

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

V tomto případě můžeme vidět, že pomocí ternárního operátoru je kód mnohem kompaktnější a snáze čitelný.

Příklad 2: Výběr nejmenšího ze dvou čísel

a = 10
b = 15

smallest = a if a < b else b

Zde vám ternární podmíněný operátor pomůže určit nejmenší ze dvou čísel tím, že vrátí menší hodnotu mezi a a b.

Příklad 3: Přiřazení minimální hodnoty dvěma proměnným:

num1 = 10
num2 = 20

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

Výstup pro tento příklad bude 10, protože ternární operátor vyhodnotí podmínku a vrátí menší hodnotu.

Příklad 4: Zjištění, zda je číslo sudé nebo liché:

num = 5

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

Výstup pro tento příklad bude Odd , protože podmínka se vyhodnotí jako False a ternární operátor vrátí příslušný výsledek.

Tyto příklady ukazují, jak může ternární operátor Pythonu učinit váš kód stručnějším a snadněji čitelným. Pomocí základní syntaxe a porozumění běžným případům použití můžete efektivně začlenit ternární operátor do kódu Pythonu.

V praktičtějších aplikacích jej můžete použít ve spojení se smyčkou pro kontrolu, vyhodnocování nebo provádění operací s daty.

Pro efektivnější manipulaci s daty se můžete podívat na toto video o tom, jak zacházet s chybějícími daty v Pythonu pomocí interpolace.

Jak používat Python Ternary Operator

Normální syntaxe ternárního operátoru if-else je jen jedním z mnoha způsobů, jak můžeme implementovat ternární operátor Pythonu. Můžeme to také implementovat pomocí běžných datových struktur, jako jsou slovníky Pythonu, n-tice a seznamy.

Podívejme se na některé z těchto metod:

Slovníkové mapování

Můžete emulovat ternární operátor Pythonu pomocí slovníkového mapování a uložit výsledky pro různé podmínky. To může být užitečné, když máte konečnou množinu podmínek a odpovídajících výsledků.

Zde je příklad použití slovníkového mapování ke kontrole, zda je číslo sudé nebo liché:

#Implement python ternary operator with dictionary mapping

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

is_even = result[number % 2 == 0]

Výše uvedený program vrátí „ Odd “, protože booleovský výraz v závorkách je vyhodnocen jako False.

Použití n-tic

Pythonské n-tice jsou uspořádaná, neměnná datová struktura, kterou můžete použít k implementaci ternárních operátorů. V zásadě má n-ticový ternární operátor syntaxi:

(condition_is_false, condition_is_true)[condition]

Podmínka je vyhodnocena jako True nebo False , které se v Pythonu rovnají celým číslům 1 a o .

N-tice tedy vrátí libovolný prvek, který odpovídá výslednému indexu. Pokud se například podmínka vyhodnotí jako True , což je 1 , vrátí kód podmínka_je true .

Jinak se vyhodnotí jako False , což je 0, a n-tice vrátí condition_is_false . Níže je uveden příklad:

#Implement ternary operator with tuples

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

N-tice uloží hodnotu ' a ' do proměnné result , protože podmínka je vyhodnocena jako False. Většina vývojářů nerada používá tento formát pro ternární operátory, protože může být trochu matoucí, což maří účel.

Funkce lambda

Lambda funkce jsou anonymní jednořádkové funkce, které můžete použít jako alternativu k ternárním operátorům. Umožňují provádět jednoduché výpočty a vrátit výsledek na základě dané podmínky.

Zde je příklad použití funkce lambda k nalezení maxima dvou čísel:

#implement python ternary operator with lambda functions

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

Funkce lambda vrátí a, pokud se podmínka vyhodnotí jako True . V opačném případě vrátí b .

Co je vnořený ternární operátor?

Vnořený ternární operátor je podmíněný výraz se dvěma nebo více booleovskými výrazy. Můžete to vytvořit zřetězením dvou nebo více booleovských podmínek dohromady a zkontrolovat více podmínek.

Tyto typy ternárních operátorů můžeme použít k modelování příkazů „ elif “ a vnořených bloků if-else.

Podívejme se na ternární operátor.

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'

Chcete-li napodobit vnořený příkaz if-else, můžete k ternárnímu operátoru Pythonu přidat závorky. To však není dobrá praxe, protože ternární operátor může být velmi dlouhý a nečitelný.

V případech, jako je tento, je lepší použít v kódu standardní blok if-else.

Jaké jsou výhody Python Ternary Operator?

Použitím ternárního operátoru Pythonu v kódu získáte mnoho výhod. Některé z těchto výhod zahrnují:

Čitelnost a stručnost kódu

Použití ternárního operátoru Pythonu může učinit váš kód stručnějším, což vám umožní psát podmíněné výrazy na jednom řádku.

To je užitečné zejména při řešení jednoduchých a přímočarých podmínek. Váš kód může být čitelnější a srozumitelnější, protože snižuje potřebu více řádků příkazů if-else.

Úvahy o výkonu

Ačkoli ternární operátor může vést ke kompaktnějšímu kódu, jeho dopad na výkon je obvykle minimální. Interpret Pythonu je navržen tak, aby optimalizoval provádění kódu, což znamená, že jak ternární operátor, tak příkazy if-else mají obecně podobné výkonnostní charakteristiky.

Když kódujete, upřednostňujte čitelnost a udržovatelnost před výkonem, pokud nepracujete s aplikacemi kritickými pro výkon.

Pamatujte, že různé situace vyžadují různé přístupy. Někdy je výhodné použít ternární operátor, zatímco v jiných případech může být vhodnější držet se tradičních příkazů if-else.

Nevýhody ternárního operátora Pythonu

Ternární operátory jsou skvělé pro zjednodušení kódu a jeho kompaktnost. Jejich použití však může mít určité nevýhody.

Zde jsou některé z těchto nevýhod:

Vnořené ternární operátory mohou být složité

V některých případech může ternární operátor způsobit, že kód bude méně čitelný, zejména při použití složitých nebo vnořených podmínek. V těchto situacích může být pro zachování srozumitelnosti kódu vhodnější začlenění konvenčních příkazů if-else.

To platí zejména tehdy, když se pokoušíte nahradit vnořený příkaz if-else ternárním operátorem. Málokdy vede k čistému kódu.

Každý operand je výraz

Všechny operandy nebo návratové hodnoty v ternárním operátoru Pythonu jsou výrazy, nikoli příkazy. Pokus o použití příkazu přiřazení uvnitř syntaxe ternárního operátoru povede k chybě syntaxe.

Můžete se podívat na příklad v níže uvedeném kódu.

'Adult' if True else x = 44

Jak vidíte níže, výsledkem je chyba syntaxe. V případech, jako je tento, byste měli místo podmíněného operátoru použít blok if-else.

Ternární operátor v Pythonu – co?  Jak?  Proč?

Doporučené postupy a tipy

Při používání ternárního operátoru v Pythonu existuje několik osvědčených postupů a tipů, které vám pomohou napsat čistý, efektivní a čitelný kód.

Nejprve se ujistěte, že váš podmíněný výraz je krátký a výstižný. Dlouhé a složité podmínky mohou ztěžovat pochopení logiky ternárního operátoru.

Pokud se ocitnete před složitým stavem, může být lepší místo toho použít běžný příkaz if-else.

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

Za druhé, vyhněte se vnořování více ternárních operátorů, což může vést k matoucímu a nečitelnému kódu. Stejně jako u složitých podmínek zvažte použití příkazu if-else pro lepší čitelnost.

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

Nakonec mějte na paměti vhodné případy použití pro ternární operátor. Je nejvhodnější pro jednoduchá jednořádková zadání, kde jsou podmínky i výsledek snadno srozumitelné.

Pokud váš kód zahrnuje složitější logiku, smyčky nebo vícenásobné přiřazení, je lepší držet se tradičních příkazů if-else.

Nejčastější dotazy týkající se ternárních operátorů Pythonu

Zde je několik otázek týkajících se ternárních operátorů, které nám obvykle kladou noví programátoři:

Jak používáte ternární operátor v příkazu return v Pythonu?

V příkazu return funkce můžete použít ternární operátor Pythonu. Jediné, co musíte udělat, je přidat jej do příkazu return.

Zde je příklad:

#program to check cheese age

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

Je ternární operátor rychlejší než příkaz if-else v Pythonu?

Ne, oba mají podobné výkonnostní charakteristiky. Ternární operátor a příkaz if-else mají časovou složitost O(1).


Tabulky proporcí a četností v Excelu

Tabulky proporcí a četností v Excelu

Chtěli jsme se ponořit do tabulek četností v Excelu a také do tabulek proporcí. Podívejte se, co to je a kdy je použít.

Ako nainštalovať DAX Studio & Tabular Editor v LuckyTemplates

Ako nainštalovať DAX Studio & Tabular Editor v LuckyTemplates

Zistite, ako stiahnuť a nainštalovať DAX Studio a Tabular Editor 3 a ako ich nakonfigurovať na použitie v LuckyTemplates a v Exceli.

LuckyTemplates Vizualizácia tvarovej mapy pre priestorovú analýzu

LuckyTemplates Vizualizácia tvarovej mapy pre priestorovú analýzu

Tento blog obsahuje vizualizáciu Shape Map pre priestorovú analýzu v LuckyTemplates. Ukážem vám, ako môžete efektívne využiť túto vizualizáciu s jej funkciami a prvkami.

LuckyTemplates Finančné výkazníctvo: Prideľovanie výsledkov šablónam v každom jednom riadku

LuckyTemplates Finančné výkazníctvo: Prideľovanie výsledkov šablónam v každom jednom riadku

V tomto návode predstavujem jedinečný nápad týkajúci sa finančného výkazníctva, ktorý spočíva v prideľovaní výsledkov na vopred určené šablóny tabuliek v rámci LuckyTemplates.

DAX měří v LuckyTemplates pomocí Measure Branching

DAX měří v LuckyTemplates pomocí Measure Branching

Vytvářejte míry DAX v LuckyTemplates pomocí existujících mír nebo vzorců. Tomu říkám technika větvení opatření.

Najvýkonnejšie volanie funkcie v LuckyTemplates

Najvýkonnejšie volanie funkcie v LuckyTemplates

V tomto blogu preskúmajte množinu údajov LuckyTemplates, najvýkonnejšie volanie funkcií, ktoré vám prináša tisíce funkcií M a DAX na dosah ruky.

Techniky modelovania údajov na organizáciu opatrení DAX

Techniky modelovania údajov na organizáciu opatrení DAX

V dnešnom návode sa podelím o niekoľko techník modelovania údajov o tom, ako lepšie usporiadať vaše merania DAX pre efektívnejší pracovný tok.

LuckyTemplates Financial Dashboard: Kompletné tipy na prispôsobenie tabuľky

LuckyTemplates Financial Dashboard: Kompletné tipy na prispôsobenie tabuľky

LuckyTemplates je skvelý nástroj pre finančné výkazníctvo. Tu je návod, ako vytvoriť prispôsobené tabuľky pre váš finančný dashboard LuckyTemplates.

Osvedčené postupy toku jazyka Power Query

Osvedčené postupy toku jazyka Power Query

V tomto návode sa bude diskutovať o toku jazyka Power Query a o tom, ako môže pomôcť vytvoriť hladkú a efektívnu zostavu údajov.

LuckyTemplates vlastní ikony | Vizualizační technika PBI

LuckyTemplates vlastní ikony | Vizualizační technika PBI

Budu diskutovat o jedné z mých oblíbených technik kolem vlastních ikon LuckyTemplates, která používá vlastní ikony dynamickým způsobem ve vizuálech LuckyTemplates.