Problem: Jak wykonać jednowierszowe przypisanie warunkowe if w Pythonie?

Przykład: Powiedzmy, że zaczynasz z następującym kodem.

x = 2boo = True

Chcesz ustawić wartość x na 42, jeśli boo jest True, i nie robić nic w przeciwnym razie.

Zanurzmy się w różne sposoby osiągnięcia tego w Pythonie. Zaczynamy od przeglądu:

Ćwiczenie: Uruchom kod. Czy wszystkie wyniki są takie same?

Następnie zagłębimy się w każdą z tych metod i zwiększymy swoją supermoc jednego linijki!

Spis treści

Metoda 1: Operator trójskładnikowy

Najpodstawowszy operator trójskładnikowy x if c else y zwraca wyrażenie x, jeśli wyrażenie logiczne c ma wartość True. W przeciwnym razie, jeśli wyrażenie c ma wartość False, operator trójskładnikowy zwraca alternatywne wyrażenie y.

<OnTrue> if <Condition> else <OnFalse>
Operand Opis
<OnTrue> Zwrotne wyrażenie operatora w przypadku, gdy True
<Condition> Warunek, który określa czy zwrócić gałąź <On True> czy <On False>.
<OnFalse> Zwrotne wyrażenie operatora w przypadku, gdy warunek ewaluuje do False
Operandy operatora ternarnego

Powróćmy do naszego przykładowego problemu! Chcesz ustawić wartość x na 42, jeśli boo jest True, i nie robić nic w przeciwnym razie. Oto jak to zrobić w jednym wierszu:

x = 42 if boo else x

Choć użycie operatora trójskładnikowego działa, możesz się zastanawiać, czy można uniknąć części ...else x dla przejrzystości kodu? W następnej metodzie, dowiesz się jak!

Jeśli potrzebujesz poprawić swoje zrozumienie operatora trójskładnikowego, obejrzyj następujące wideo:

Możesz również przeczytać powiązany artykuł:

  • Python One Line Ternary

Metoda 2: Single-Line If Statement

Podobnie jak w poprzedniej metodzie, chcesz ustawić wartość x na 42, jeśli boo jest True, i nie robić nic w przeciwnym razie. Ale nie chcesz mieć nadmiarowej gałęzi else. Jak to zrobić w Pythonie?

Rozwiązanie pozwalające pominąć część else operatora trójskładnikowego jest zaskakująco proste – użyj standardowej instrukcji if bez gałęzi else i zapisz ją w jednej linii kodu:

if boo: x = 42

Aby dowiedzieć się więcej o tym, co możesz zapakować do jednej linii, obejrzyj mój film instruktażowy „If-Then-Else in One Line Python”:

Metoda 3: Ternary Tuple Syntax Hack

Python Ternary Tuple Syntax

Skróconą formą operatora trójskładniowego jest następująca składnia tuple.

Syntaktyka: Możesz użyć składni tuple (x, y) składającej się z tuple (x, y) i warunku c zamkniętego w nawiasie kwadratowym. Oto bardziej intuicyjny sposób reprezentowania tej składni tuple.

(<OnFalse>, <OnTrue>)
Operand Description
<OnTrue> Zwrotne wyrażenie operatora w przypadku, gdy True
<Condition> Warunek, który określa czy zwrócić gałąź <On True> czy <On False>.
<OnFalse> Zwrotne wyrażenie operatora w przypadku, gdy warunek ewaluuje do False
Tuple Syntax of the Ternary Operator

W rzeczywistości, kolejność operandów <OnFalse> i <OnTrue> jest po prostu odwrócona w porównaniu z podstawowym operatorem trójkowym. Po pierwsze, masz gałąź, która jest zwracana, jeśli warunek NIE trzyma się. Po drugie, uruchamiasz gałąź, która jest zwracana, jeśli warunek się spełni.

x = (x, 42)

Clever! Warunek boo trzyma się, więc wartością zwracaną przekazywaną do zmiennej x jest gałąź <OnTrue> 42.

Nie martw się, jeśli to Cię zdezorientuje – nie jesteś sam. Możesz wyjaśnić składnię tuple raz na zawsze, studiując mój szczegółowy artykuł na blogu.

Related Article: Python Ternary – Tuple Syntax Hack

Python One-Liners Book

Programiści Pythona poprawią swoje umiejętności w zakresie informatyki dzięki tym przydatnym one-linerom.

Python One-Liners

Python One-Liners nauczy Cię, jak czytać i pisać „one-linery”: zwięzłe stwierdzenia użytecznej funkcjonalności zapakowane w pojedynczy wiersz kodu. Dowiesz się, jak systematycznie rozpakowywać i rozumieć dowolną linię kodu Pythona oraz pisać elokwentny, potężnie skompresowany Python jak ekspert.

Pięć rozdziałów książki obejmuje wskazówki i sztuczki, wyrażenia regularne, uczenie maszynowe, podstawowe tematy z dziedziny data science oraz przydatne algorytmy. Szczegółowe objaśnienia pojedynczych zdań wprowadzają kluczowe pojęcia z dziedziny informatyki i zwiększają Twoje umiejętności kodowania i analizy. Poznasz zaawansowane funkcje Pythona, takie jak rozumienie list, krojenie, funkcje lambda, wyrażenia regularne, funkcje mapowania i redukcji oraz przypisywanie wycinków. Dowiesz się również, jak:

– Wykorzystywać struktury danych do rozwiązywania problemów ze świata rzeczywistego, takich jak zastosowanie indeksowania booleańskiego do znajdowania miast o ponadprzeciętnym zanieczyszczeniu
– Stosować podstawy NumPy, takie jak tablica, kształt, oś, typ, nadawanie, zaawansowane indeksowanie, krojenie, sortowanie, wyszukiwanie, agregowanie i statystyki
– Obliczać podstawowe statystyki wielowymiarowych tablic danych oraz algorytmy K-Means do uczenia bez nadzoru
– Tworzyć bardziej zaawansowane wyrażenia regularne z wykorzystaniem grupowania i grup nazwanych, ujemnych nagłówków, ucieczki znaków, białych spacji, zestawów znaków (i zestawów znaków ujemnych), oraz operatorów zachłannych/niezachłannych
– Zrozumienie szerokiego zakresu tematów informatyki, w tym anagramów, palindromów, supersetów, permutacji, liczby pierwsze, liczby Fibonacciego, maskowanie, wyszukiwanie i sortowanie algorytmiczne

Pod koniec tej książki będziesz wiedział, jak pisać w Pythonie w najbardziej wyrafinowany sposób i tworzyć zwięzłe, piękne dzieła „sztuki Pythona” w zaledwie jednym wierszu.

Get your Python One-Liners Now!!!

Pracując jako badacz systemów rozproszonych, dr Christian Mayer odnalazł swoją miłość do nauczania studentów informatyki.

Aby pomóc studentom osiągnąć wyższy poziom sukcesu w Pythonie, założył stronę internetową poświęconą edukacji programistycznej Finxter.com. Jest autorem popularnej książki o programowaniu Python One-Liners (NoStarch 2020), współautorem serii samodzielnie wydawanych książek Coffee Break Python, entuzjastą informatyki, freelancerem i właścicielem jednego z 10 największych blogów Pythona na świecie.

Jego pasją jest pisanie, czytanie i kodowanie. Ale jego największą pasją jest służenie aspirującym koderom poprzez Finxtera i pomaganie im w zwiększaniu ich umiejętności. Możesz dołączyć do jego darmowej akademii e-mailowej tutaj.

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.