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