Operator trójskładnikowy w Pythonie – co? Jak? Dlaczego?

W świecie programowania umiejętność upraszczania kodu jest cenna zarówno ze względu na jego czytelność, jak i wydajność. Jednym z narzędzi, które masz do dyspozycji, aby to zrobić w Pythonie, jest operator trójskładnikowy.

Operator trójskładnikowy Pythona (lub wyrażenie warunkowe) umożliwia ocenę instrukcji na podstawie tego, czy dany warunek jest prawdziwy, czy fałszywy, a wszystko to w jednym wierszu kodu. Może skutecznie zastąpić wielowierszową instrukcję if-else, czyniąc kod bardziej zwartym.

Kiedy będziemy badać potencjał operatorów trójskładnikowych w Pythonie , przekonasz się, że mogą one być bardzo przydatne do optymalizacji twoich programów. Niezależnie od tego, czy chodzi o uproszczenie logiki podejmowania decyzji, czy usprawnienie kodu, efektywne użycie operatorów trójskładnikowych Pythona może znacznie ułatwić czytanie i zrozumienie kodu.

Zajrzyjmy więc pod maskę i zobaczmy, o co w nich chodzi!

Operator trójskładnikowy w Pythonie – co?  Jak?  Dlaczego?

Spis treści

Co to jest operator trójskładnikowy Pythona?

Operatory trójskładnikowe Pythona oferują zwięzły sposób oceny instrukcji na podstawie tego, czy warunek jest prawdziwy, czy fałszywy, dzięki czemu kod jest zwięzły i łatwiejszy do odczytania. Niektórzy nazywają je również wyrażeniami warunkowymi lub operatorami warunkowymi.

Podstawowa składnia

Operator trójskładnikowy został wprowadzony w Pythonie 2.5 i ma prostą strukturę składającą się z trzech operandów:

#demonstrate python ternary operator syntax

result = value_if_true if condition else value_if_false

Ta składnia składa się z trzech głównych części:

  1. Warunek : To jest wyrażenie boolowskie oceniane jako prawda lub fałsz, a

  2. value_if_true : Wartość, która jest zwracana, jeśli wyrażenie boolowskie jest prawdziwe.

  3. value_if_false : Wartość, która jest zwracana, jeśli wyrażenie boolowskie jest fałszywe.

Typowe przypadki użycia

Operatory trójskładnikowe lub wyrażenia warunkowe są często używane do uproszczenia krótkich instrukcji if-else w kodzie. Oto kilka przykładów ilustrujących sposób zastosowania operatora trójskładnikowego Pythona:

Przykład 1: Przypisanie wartości na podstawie warunku

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

W tym przykładzie operator trójskładnikowy w Pythonie przypisuje zmiennej kategorii wartość „ dorosły ” , jeśli wiek jest większy lub równy 18 lat, a w przeciwnym razie „ małoletni ”.

Zakładając, że zdecydowaliśmy się użyć instrukcji if-else zamiast operatora trójskładnikowego Pythona, wyglądałoby to mniej więcej tak:

age = 25

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

W tym przypadku widzimy, że użycie operatora trójskładnikowego sprawia, że ​​kod jest znacznie bardziej zwarty i łatwiejszy do odczytania.

Przykład 2: Wybór najmniejszej z dwóch liczb

a = 10
b = 15

smallest = a if a < b else b

Tutaj trójskładnikowy operator warunkowy pomaga określić najmniejszą z dwóch liczb, zwracając mniejszą wartość między a i b.

Przykład 3: Przypisanie wartości minimalnej dwóm zmiennym:

num1 = 10
num2 = 20

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

Dane wyjściowe w tym przykładzie wyniosą 10, ponieważ operator trójskładnikowy oblicza warunek i zwraca mniejszą wartość.

Przykład 4: Sprawdzanie, czy liczba jest parzysta czy nieparzysta:

num = 5

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

Dane wyjściowe dla tego przykładu będą Odd , ponieważ warunek ma wartość False , a operator trójskładnikowy zwraca odpowiedni wynik.

Te przykłady pokazują, jak operator trójskładnikowy Pythona może sprawić, że Twój kod będzie bardziej zwięzły i łatwiejszy do odczytania. Korzystając z podstawowej składni i rozumiejąc typowe przypadki użycia, możesz skutecznie włączyć operator trójskładnikowy do kodu Pythona.

W bardziej praktycznych zastosowaniach można go używać w połączeniu z pętlą do sprawdzania, oceniania lub wykonywania operacji na danych.

Aby uzyskać bardziej wydajną obsługę danych, możesz obejrzeć ten film na temat obsługi brakujących danych w języku Python za pomocą interpolacji.

Jak korzystać z operatora trójskładnikowego Pythona

Normalna składnia operatora trójskładnikowego if-else to tylko jeden z wielu sposobów implementacji operatora trójskładnikowego w Pythonie. Możemy go również zaimplementować, używając typowych struktur danych, takich jak słowniki Pythona, krotki i listy.

Przyjrzyjmy się niektórym z tych metod:

Mapowanie słownika

Możesz emulować potrójny operator Pythona z mapowaniem słownikowym, aby przechowywać wyniki dla różnych warunków. Może to być przydatne, gdy masz skończony zestaw warunków i odpowiadających im wyników.

Oto przykład użycia mapowania słownika w celu sprawdzenia, czy liczba jest parzysta czy nieparzysta:

#Implement python ternary operator with dictionary mapping

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

is_even = result[number % 2 == 0]

Powyższy program zwróci „ Nieparzyste ”, ponieważ wyrażenie boolowskie w nawiasach ma wartość False.

Korzystanie z krotek

Krotki Pythona to uporządkowana, niezmienna struktura danych, której można użyć do implementacji operatorów trójskładnikowych. Zasadniczo potrójny operator krotki ma składnię:

(condition_is_false, condition_is_true)[condition]

Warunek ma wartość True lub False , które w Pythonie są równe odpowiednio liczbom całkowitym 1 i o .

Tak więc krotka zwraca dowolny element pasujący do wynikowego indeksu. Na przykład, jeśli warunek ma wartość True , czyli 1 , kod zwraca condition_is true .

W przeciwnym razie ocenia False , czyli 0, a krotka zwraca condition_is_false . Oto przykład poniżej:

#Implement ternary operator with tuples

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

Krotka zapisze wartość „ a ” w zmiennej result , ponieważ warunek ma wartość False. Większość programistów nie lubi używać tego formatu dla operatorów trójskładnikowych, ponieważ może to być trochę mylące, co mija się z celem.

Funkcje lambdy

Funkcje lambda to anonimowe funkcje jednowierszowe, których można używać jako alternatywy dla operatorów trójskładnikowych. Pozwalają wykonać proste obliczenia i zwrócić wynik na podstawie zadanego warunku.

Oto przykład użycia funkcji lambda do znalezienia maksimum dwóch liczb:

#implement python ternary operator with lambda functions

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

Funkcja lambda zwraca a , jeśli warunek ma wartość True . W przeciwnym razie zwraca b .

Co to jest zagnieżdżony operator trójskładnikowy?

Zagnieżdżony operator trójskładnikowy jest wyrażeniem warunkowym zawierającym co najmniej dwa wyrażenia boolowskie. Możesz to stworzyć, łącząc ze sobą dwa lub więcej warunków boolowskich, aby sprawdzić wiele warunków.

Możemy użyć tego typu operatorów trójskładnikowych do modelowania instrukcji „ elif ” i zagnieżdżonych bloków if-else.

Spójrzmy na przykład zagnieżdżonego operatora trójskładnikowego Pythona.

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'

Możesz dodać nawiasy do operatora trójskładnikowego Pythona, jeśli chcesz naśladować zagnieżdżoną instrukcję if-else. Nie jest to jednak dobra praktyka, ponieważ operator trójskładnikowy może stać się bardzo długi i nieczytelny.

W takich przypadkach lepiej jest użyć standardowego bloku if-else w swoim kodzie.

Jakie są zalety trójskładnikowego operatora Pythona?

Korzystanie z operatora trójskładnikowego Pythona w kodzie ma wiele zalet. Niektóre z tych zalet obejmują:

Czytelność i zwięzłość kodu

Użycie operatora trójskładnikowego w Pythonie może sprawić, że Twój kod będzie bardziej zwięzły, umożliwiając pisanie wyrażeń warunkowych w jednym wierszu.

Jest to szczególnie pomocne w przypadku prostych i jednoznacznych warunków. Twój kod może być bardziej czytelny i łatwiejszy do zrozumienia, ponieważ zmniejsza potrzebę stosowania wielu wierszy instrukcji if-else.

Rozważania dotyczące wydajności

Chociaż operator trójskładnikowy może prowadzić do bardziej zwartego kodu, jego wpływ na wydajność jest zwykle minimalny. Interpreter Pythona został zaprojektowany w celu optymalizacji wykonywania kodu, co oznacza, że ​​zarówno operator trójskładnikowy, jak i instrukcje if-else mają ogólnie podobną charakterystykę wydajności.

Pisząc kod w Pythonie , przedkładaj czytelność i łatwość konserwacji nad wydajność, chyba że pracujesz z aplikacjami o krytycznym znaczeniu dla wydajności.

Pamiętaj, że różne sytuacje wymagają różnych podejść. Czasami użycie operatora trójskładnikowego jest korzystne, podczas gdy w innych przypadkach bardziej odpowiednie może być trzymanie się tradycyjnych instrukcji if-else.

Wady operatora trójskładnikowego Pythona

Operatory trójskładnikowe doskonale nadają się do uproszczenia kodu i uczynienia go zwartym. Korzystanie z nich może mieć jednak pewne wady.

Oto niektóre z tych wad:

Zagnieżdżone operatory trójskładnikowe mogą stać się złożone

W niektórych przypadkach operator trójskładnikowy może sprawić, że kod będzie mniej czytelny, szczególnie w przypadku stosowania warunków złożonych lub zagnieżdżonych. W takich sytuacjach włączenie konwencjonalnych instrukcji if-else może być bardziej odpowiednie, aby zachować przejrzystość kodu.

Jest to szczególnie prawdziwe, gdy próbujesz zastąpić zagnieżdżoną instrukcję if-else operatorem trójskładnikowym. Rzadko skutkuje to czystym kodem.

Każdy operand jest wyrażeniem

Wszystkie operandy lub zwracane wartości w trójskładnikowym operatorze Pythona są wyrażeniami, a nie instrukcjami. Próba użycia instrukcji przypisania w składni operatora trójskładnikowego doprowadzi do błędu składniowego.

Możesz sprawdzić przykład tego w poniższym kodzie.

'Adult' if True else x = 44

Jak widać poniżej, skutkuje to błędem składniowym. W takich przypadkach powinieneś użyć bloku if-else zamiast operatora warunkowego.

Operator trójskładnikowy w Pythonie – co?  Jak?  Dlaczego?

Najlepsze praktyki i porady

Podczas korzystania z operatora trójskładnikowego w Pythonie istnieją pewne sprawdzone metody i wskazówki, które pomogą Ci pisać czysty, wydajny i czytelny kod.

Po pierwsze, upewnij się, że wyrażenie warunkowe jest krótkie i zwięzłe. Długie i złożone warunki mogą utrudniać zrozumienie logiki stojącej za operatorem trójskładnikowym.

Jeśli znajdziesz się w obliczu złożonego warunku, lepiej zamiast tego użyć zwykłej instrukcji 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 ...

Po drugie, unikaj zagnieżdżania wielu operatorów trójskładnikowych, co może prowadzić do mylącego i nieczytelnego kodu. Podobnie jak w przypadku złożonych warunków, rozważ użycie instrukcji if-else dla większej czytelności.

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

Na koniec pamiętaj o odpowiednich przypadkach użycia operatora trójskładnikowego. Najbardziej nadaje się do prostych, jednowierszowych zadań, w których zarówno warunek, jak i wynik są łatwe do zrozumienia.

Jeśli twój kod zawiera bardziej złożoną logikę, pętle lub wiele przypisań, lepiej trzymać się tradycyjnych instrukcji if-else.

Często zadawane pytania dotyczące operatorów trójskładnikowych w języku Python

Oto kilka pytań, które zwykle zadają nam nowi programiści na temat operatorów trójskładnikowych:

Jak używać operatora trójskładnikowego w instrukcji return w Pythonie?

Możesz użyć operatora trójskładnikowego Pythona w instrukcji return funkcji. Wystarczy, że dodasz go do deklaracji return.

Oto przykład:

#program to check cheese age

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

Czy operator trójskładnikowy jest szybszy niż instrukcja if-else w Pythonie?

Nie, oba mają podobne właściwości użytkowe. Zarówno operator trójskładnikowy, jak i instrukcja if-else mają złożoność czasową O(1).

Leave a Comment

Dodawaj, usuwaj i zmieniaj nazwy kolumn w R za pomocą Dplyr

Dodawaj, usuwaj i zmieniaj nazwy kolumn w R za pomocą Dplyr

W tym samouczku omówimy pakiet dplyr, który umożliwia sortowanie, filtrowanie, dodawanie i zmianę nazw kolumn w języku R.

Funkcje zbierania w Microsoft Power Automate

Funkcje zbierania w Microsoft Power Automate

Odkryj różnorodne funkcje zbierania, które można wykorzystać w Power Automate. Zdobądź praktyczne informacje o funkcjach tablicowych i ich zastosowaniu.

Oceń wydajność kodu DAX w DAX Studio

Oceń wydajność kodu DAX w DAX Studio

Z tego samouczka dowiesz się, jak ocenić wydajność kodów DAX przy użyciu opcji Uruchom test porównawczy w DAX Studio.

Czym jest self w Pythonie: przykłady z życia wzięte

Czym jest self w Pythonie: przykłady z życia wzięte

Czym jest self w Pythonie: przykłady z życia wzięte

Jak zapisać i załadować plik RDS w R

Jak zapisać i załadować plik RDS w R

Dowiesz się, jak zapisywać i ładować obiekty z pliku .rds w R. Ten blog będzie również omawiał sposób importowania obiektów z R do LuckyTemplates.

Powrót do pierwszych N dni roboczych — rozwiązanie języka kodowania DAX

Powrót do pierwszych N dni roboczych — rozwiązanie języka kodowania DAX

Z tego samouczka języka kodowania DAX dowiesz się, jak używać funkcji GENERUJ i jak dynamicznie zmieniać tytuł miary.

Zaprezentuj spostrzeżenia przy użyciu wielowątkowej techniki dynamicznych wizualizacji w usłudze LuckyTemplates

Zaprezentuj spostrzeżenia przy użyciu wielowątkowej techniki dynamicznych wizualizacji w usłudze LuckyTemplates

W tym samouczku omówiono sposób korzystania z techniki wielowątkowych wizualizacji dynamicznych w celu tworzenia szczegółowych informacji na podstawie dynamicznych wizualizacji danych w raportach.

Wprowadzenie do filtrowania kontekstu w usłudze LuckyTemplates

Wprowadzenie do filtrowania kontekstu w usłudze LuckyTemplates

W tym artykule omówię kontekst filtra. Kontekst filtrowania to jeden z głównych tematów, z którym każdy użytkownik usługi LuckyTemplates powinien zapoznać się na początku.

Najlepsze wskazówki dotyczące korzystania z aplikacji w usłudze online LuckyTemplates

Najlepsze wskazówki dotyczące korzystania z aplikacji w usłudze online LuckyTemplates

Chcę pokazać, jak usługa online LuckyTemplates Apps może pomóc w zarządzaniu różnymi raportami i spostrzeżeniami generowanymi z różnych źródeł.

Analizuj zmiany marży zysku w godzinach nadliczbowych — Analizuj za pomocą LuckyTemplates i DAX

Analizuj zmiany marży zysku w godzinach nadliczbowych — Analizuj za pomocą LuckyTemplates i DAX

Dowiedz się, jak obliczyć zmiany marży zysku przy użyciu technik, takich jak rozgałęzianie miar i łączenie formuł języka DAX w usłudze LuckyTemplates.