Probleem: hoe voer je in Python voorwaardelijke toewijzingen op één regel uit?
Voorbeeld: Stel, je begint met de volgende code.
x = 2boo = True
Je wilt de waarde van x
op 42
zetten als boo
True
is, en anders niets doen.
Laten we eens duiken in de verschillende manieren om dit in Python te bereiken. We beginnen met een overzicht:
Oefening: Voer de code uit. Zijn alle uitgangen hetzelfde?
Daarna duik je in elk van deze methoden en verbeter je je one-liner superkracht!
Inhoudsopgave
Methode 1: Ternaire Operator
De meest eenvoudige ternaire operator x if c else y
geeft expressie x
terug als de Booleaanse expressie c
evalueert naar True
. Anders, als de uitdrukking c
evalueert naar False
, retourneert de ternaire operator de alternatieve uitdrukking y
.
<OnTrue> if <Condition> else <OnFalse>
Operand | Description |
---|---|
<OnTrue> | De retourexpressie van de operator in het geval dat de voorwaarde evalueert als True |
<Condition> | De voorwaarde die bepaalt of de <On True> of de <On False> tak moet worden geretourneerd. |
<OnFalse> | De terugkeeruitdrukking van de operator in het geval dat de voorwaarde evalueert als False |
Laten we teruggaan naar ons voorbeeldprobleem! U wilt de waarde van x
instellen op 42
als boo
True
is, en anders niets doen. Hier volgt hoe u dit in een enkele regel kunt doen:
x = 42 if boo else x
Hoewel het gebruik van de ternaire operator werkt, kunt u zich afvragen of het mogelijk is om het ...else x
gedeelte te vermijden voor de duidelijkheid van de code? In de volgende methode leert u hoe!
Als u de ternaire operator beter wilt leren begrijpen, bekijk dan de volgende video:
U kunt ook het bijbehorende artikel lezen:
- Python One Line Ternary
Methode 2: Single-Line If Statement
Net als in de vorige methode wilt u de waarde van x
op 42
zetten als boo
True
is, en anders niets doen. Maar je wilt geen overbodige else branch hebben. Hoe doe je dit in Python?
De oplossing om het else deel van de ternaire operator over te slaan is verrassend eenvoudig-gebruik een standaard if statement zonder else tak en schrijf het in een enkele regel code:
if boo: x = 42
Om meer te leren over wat je kunt verpakken in een enkele regel, bekijk mijn tutorial video “If-Then-Else in One Line Python”:
Methode 3: Ternary Tuple Syntax Hack
Een steno vorm van de ternaire operator is de volgende tuple syntax.
Syntaxis: U kunt de tuple-syntaxis (x, y)
gebruiken die bestaat uit een tuple (x, y)
en een voorwaarde c
ingesloten in een vierkant haakje. Hier is een meer intuïtieve manier om deze tuple syntaxis weer te geven.
(<OnFalse>, <OnTrue>)
Operand | Description |
---|---|
<OnTrue> | De terugkeerexpressie van de operator in het geval dat de voorwaarde evalueert als True |
<Condition> | De voorwaarde die bepaalt of de <On True> of de <On False> tak moet worden geretourneerd. |
<OnFalse> | De retour uitdrukking van de operator in het geval dat de voorwaarde evalueert als False |
In feite, is de volgorde van de <OnFalse>
en <OnTrue>
operanden net omgedraaid in vergelijking met de basis ternaire operator. Eerst heb je de vertakking die wordt teruggestuurd als de voorwaarde NIET geldt. Ten tweede heb je de tak die terug komt als de voorwaarde wel geldt.
x = (x, 42)
Clever! De voorwaarde boo
geldt, dus de retourwaarde in de variabele x
is de <OnTrue>
tak 42
.
Maak je geen zorgen als dit je verwart-je bent niet alleen. U kunt de tuple syntaxis voor eens en voor altijd verduidelijken door het bestuderen van mijn gedetailleerde blog artikel.
Gerelateerd artikel: Python Ternary – Tuple Syntax Hack
Python One-Liners Book
Python-programmeurs zullen hun computerwetenschappelijke vaardigheden verbeteren met deze nuttige oneliners.
Python One-Liners leert je hoe je “oneliners” kunt lezen en schrijven: beknopte verklaringen van nuttige functionaliteit verpakt in een enkele regel code. U leert hoe u systematisch elke regel Python-code kunt uitpakken en begrijpen, en als een expert welsprekende, krachtig gecomprimeerde Python kunt schrijven.
De vijf hoofdstukken van het boek behandelen tips en trucs, reguliere expressies, machinaal leren, kernonderwerpen voor gegevenswetenschap en nuttige algoritmen. Gedetailleerde uitleg van oneliners introduceren belangrijke computerwetenschappelijke concepten en stimuleren uw codeer- en analytische vaardigheden. Je leert over geavanceerde Python-functies zoals list comprehension, slicing, lambda-functies, reguliere expressies, map- en reduce-functies, en slice-opdrachten. U leert ook hoe u:
– Gegevensstructuren te gebruiken om problemen uit de praktijk op te lossen, zoals het gebruik van Booleaanse indexering om steden met bovengemiddelde vervuiling te vinden
– NumPy-basics te gebruiken zoals array, shape, axis, type, broadcasting, geavanceerde indexering, slicing, sorteren, zoeken, aggregeren en statistiek
– Basisstatistieken van multidimensionale gegevensarrays en de K-Means-algoritmen voor leren zonder toezicht te berekenen
– Meer geavanceerde reguliere expressies te maken met behulp van grouping en named groups, negatieve lookaheads, escaped characters, whitespaces, character sets (en negative characters sets), and greedy/nonreedy operators
– Begrijp een breed scala aan computerwetenschappelijke onderwerpen, waaronder anagrammen, palindromen, supersets, permutaties, factorials, priemgetallen, Fibonacci getallen, verduistering, zoeken, en algoritmisch sorteren
Aan het eind van het boek zult u weten hoe u Python op zijn meest verfijnd kunt schrijven, en beknopte, mooie stukjes “Python kunst” kunt maken in slechts een enkele regel.
Krijg nu uw Python One-Liners!!
Tijdens zijn werk als onderzoeker op het gebied van gedistribueerde systemen vond Dr. Christian Mayer zijn liefde voor het lesgeven aan studenten informatica.
Om studenten te helpen een hoger niveau van Python-succes te bereiken, richtte hij de programmeeronderwijswebsite Finxter.com op. Hij is auteur van het populaire programmeerboek Python One-Liners (NoStarch 2020), medeauteur van de Coffee Break Python-serie van zelfgepubliceerde boeken, liefhebber van informatica, freelancer, en eigenaar van een van de top 10 grootste Python-blogs wereldwijd.
Zijn passies zijn schrijven, lezen en coderen. Maar zijn grootste passie is aspirant-coders via Finxter van dienst te zijn en hen te helpen hun vaardigheden te verbeteren. U kunt hier lid worden van zijn gratis e-mailacademie.