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
Operandoer for den ternære operatør

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

Python ternær tupelsyntaks

En forkortet form af den ternære operatør er følgende tupelsyntaks:

Python ternær 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
Tuplesyntaks for den ternære operatør

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

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.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.