Problem: Hvordan udfører man betingede if-tildelinger på én linje i Python?
Eksempel:
x = 2boo = True
Du ønsker at sætte værdien af x
til 42
, hvis boo
er True
, og ellers ikke gøre noget.
Lad os dykke ned i de forskellige måder at opnå dette på i Python. Vi starter med en oversigt:
Øvelse: Kør koden. Er alle output ens?
Næste gang dykker du ned i hver af disse metoder og øger din superkraft i en enkelt linje!
Indholdsfortegnelse
Metode 1: Ternær operatør
Den mest grundlæggende ternære operatør x if c else y
returnerer udtryk x
, hvis det boolske udtryk c
evalueres til True
. Hvis udtrykket c
ellers evalueres til False
, returnerer den ternære operatør det alternative udtryk y
, hvis udtrykket c
evalueres til False
.
<OnTrue> if <Condition> else <OnFalse>
Operand | Beskrivelse |
---|---|
<OnTrue> | Operatorens returudtryk i tilfælde af, at betingelse evalueres til True |
<Betingelse> | Den betingelse, der bestemmer, om der skal returneres <På True> eller <På False>-gren. |
<OnFalse> | Operatorens returudtryk i tilfælde af, at betingelsen evalueres til False |
Lad os gå tilbage til vores eksempelproblem! Du ønsker at sætte værdien af x
til 42
, hvis boo
er True
, og ellers ikke gøre noget. Sådan gør du det i en enkelt linje:
x = 42 if boo else x
Selv om det virker at bruge den ternære operatør, kan du spekulere på, om det er muligt at undgå ...else x
-delen for at gøre koden mere overskuelig? I den næste metode vil du lære hvordan!
Hvis du har brug for at forbedre din forståelse af den ternære operatør, kan du se følgende video:
Du kan også læse den relaterede artikel:
- Python One Line Ternary
Metode 2: Single-Line If Statement
Som i den foregående metode ønsker du at sætte værdien af x
til 42
, hvis boo
er True
, og ellers ikke gøre noget. Men du ønsker ikke at have en overflødig else-forgrening. Hvordan gør man dette i Python?
Løsningen til at springe else-delen af den ternære operatør over er overraskende enkel – brug en standard if-erklæring uden else-forgrening, og skriv den ind i en enkelt linje kode:
if boo: x = 42
For at lære mere om, hvad du kan pakke ind i en enkelt linje, skal du se min tutorialvideo “If-Then-Else in One Line Python”:
Metode 3: Hack af ternær tupelsyntaks
En forkortet form af den ternære operatør er følgende tupelsyntaks:
Syntaks: Du kan bruge tupelsyntaksen (x, y)
, der består af en tupel (x, y)
og en betingelse c
, der er omsluttet af en firkantet parentes. Her er en mere intuitiv måde at repræsentere denne tupelsyntaks på.
(<OnFalse>, <OnTrue>)
Operand | Beskrivelse |
---|---|
<OnTrue> | Operatorens returudtryk i tilfælde af, at den betingelse evalueres til True |
<Betingelse> | Den betingelse, der bestemmer, om der skal returneres <På True> eller <På False>-gren. |
<OnFalse> | Operatorens returudtryk i tilfælde af, at betingelsen evalueres til False |
I virkeligheden, er rækkefølgen af <OnFalse>
og <OnTrue>
operanderne blot vendt om i forhold til den grundlæggende ternære operator. For det første har du den gren, der returneres, hvis betingelsen IKKE er opfyldt. For det andet kører du den gren, der returneres, hvis betingelsen holder.
x = (x, 42)
>Smart! Betingelsen boo
holder, så den returværdi, der overføres til x
-variablen, er <OnTrue>
-grenen 42
.
Du skal ikke være bekymret, hvis dette forvirrer dig – du er ikke alene. Du kan afklare tuplesyntaksen én gang for alle ved at studere min detaljerede blogartikel.
Relateret artikel: Python Ternary – Tuple Syntax Hack
Python One-Liners Book
Python-programmører vil forbedre deres datalogiske færdigheder med disse nyttige one-liners.
Python One-Liners vil lære dig at læse og skrive “one-liners”: kortfattede udsagn om nyttig funktionalitet pakket ind i en enkelt linje kode. Du lærer, hvordan du systematisk udpakker og forstår enhver linje Python-kode og skriver veltalende, stærkt komprimeret Python som en ekspert.
Bogens fem kapitler dækker tips og tricks, regulære udtryk, maskinlæring, centrale emner inden for datalogi og nyttige algoritmer. Detaljerede forklaringer af one-liners introducerer centrale datalogiske begreber og styrker dine kodnings- og analytiske færdigheder. Du lærer om avancerede Python-funktioner som list comprehension, slicing, lambda-funktioner, regulære udtryk, map- og reduce-funktioner og slice-tildelinger. Du lærer også, hvordan du:
– Udnytte datastrukturer til at løse problemer fra den virkelige verden, som f.eks. at bruge Boolsk indeksering til at finde byer med en forurening over gennemsnittet
– Bruge NumPy-grundlæggende funktioner som array, shape, axis, type, broadcasting, avanceret indeksering, slicing, sortering, søgning, aggregering og statistik
– Beregne grundlæggende statistik for flerdimensionale datamatricer og K-Means-algoritmerne til uovervåget indlæring
– Oprette mere avancerede regulære udtryk ved hjælp af gruppering og navngivne grupper, negative lookaheads, escaped characters, whitespaces, tegnsæt (og negative tegnsæt) og greedy/nongreedy-operatorer
– Forstå en bred vifte af datalogiske emner, herunder anagrammer, palindromer, supersæt, permutationer, faktorialer, primtal, Fibonacci-tal, obfuskering, søgning og algoritmisk sortering
Ved slutningen af bogen vil du vide, hvordan du skriver Python på sin mest raffinerede måde og skaber kortfattede, smukke stykker “Python-kunst” i blot en enkelt linje.
Få dine Python-enkeltekster nu!!!
Mens han arbejdede som forsker inden for distribuerede systemer, fandt Dr. Christian Mayer sin kærlighed til at undervise studerende i datalogi.
For at hjælpe studerende med at nå et højere niveau af Python-succes grundlagde han webstedet Finxter.com, der tilbyder undervisning i programmering. Han er forfatter til den populære programmeringsbog Python One-Liners (NoStarch 2020), medforfatter til Coffee Break Python-serien af selvudgivne bøger, computervidenskabsentusiast, freelancer og ejer af en af de 10 største Python-blogs på verdensplan.
Hans passioner er at skrive, læse og programmere. Men hans største passion er at tjene håbefulde kodere gennem Finxter og hjælpe dem med at øge deres færdigheder. Du kan tilmelde dig hans gratis e-mailakademi her.