Ongelma: Miten suorittaa yhden rivin if-ehdollinen määritys Pythonissa?

Esimerkki:

x = 2boo = True

Tahdot asettaa x:n arvoksi 42, jos boo on True, etkä muuten tee mitään.

Sukelletaanpa eri tapoihin toteuttaa tämä Pythonissa. Aloitamme yleiskatsauksella:

Harjoitus: Suorita koodi. Ovatko kaikki tulosteet samat?

Seuraavaksi sukelletaan kuhunkin näistä menetelmistä ja kasvatetaan yhden rivin supervoimaasi!

Sisällysluettelo

Menetelmä 1: Ternaarinen operaattori

Perusteellisin ternaarinen operaattori x if c else y palauttaa lausekkeen x, jos Boole-lausekkeen c evaluointi on True. Muussa tapauksessa, jos lauseke c on False, ternäärinen operaattori palauttaa vaihtoehtoisen lausekkeen y.

<OnTrue> if <Condition> else <OnFalse>
Operand Kuvaus
<OnTrue> Operaattorin paluuilmaus siinä tapauksessa, että ehto evaluoituu True
<Ehto> Ehto, joka määrittää, palautetaanko <On True> vai <On False> -haara.
<OnFalse> Operaattorin paluuilmaus siinä tapauksessa, että ehto evaluoituu False
Ternaarisen operaattorin operandit

Palataan vielä esimerkkitehtävään! Haluamme asettaa x:n arvoksi 42, jos boo on True, ja muuten emme tee mitään. Näin teet tämän yhdellä rivillä:

x = 42 if boo else x

Vaikka ternäärisen operaattorin käyttäminen toimii, saatat miettiä, olisiko mahdollista välttää ...else x-osaa koodin selkeyden vuoksi? Seuraavassa menetelmässä opit miten!

Jos haluat parantaa ymmärrystäsi ternäärisestä operaattorista, katso seuraava video:

Voit myös lukea siihen liittyvän artikkelin:

  • Pythonin yksirivinen ternäärioperaattori

Menetelmä 2: Yksirivinen If-lause

Kuten edellisessäkin menetelmässä, haluat asettaa x:n arvon 42:ksi, jos boo on True, äläkä tehdä mitään muuten. Mutta et halua turhaa else-haaraa. Miten tämä tehdään Pythonissa?

Ratkaisu ternäärisen operaattorin else-osan ohittamiseen on yllättävän yksinkertainen – käytä tavallista if-lausetta ilman else-haaraa ja kirjoita se yhdelle koodiriville:

if boo: x = 42

Kun haluat oppia lisää siitä, mitä kaikkea voit pakata yhdelle riville, katso opetusvideoni ”If-Then-Else in One Line Python”:

Menetelmä 3: Ternary Tuple Syntax Hack

Python Ternary Tuple Syntax

Ternary-operaattorin lyhennetty muoto on seuraava tuplen syntaksi.

Syntax: Voit käyttää tuplasyntaksia (x, y), joka koostuu tuplasta (x, y) ja ehdosta c, joka on suljettu hakasulkeisiin. Tässä on intuitiivisempi tapa esittää tämä tuplasyntaksi.

(<OnFalse>, <OnTrue>)
Operand Kuvaus
<OnTrue> Operaattorin paluuilmaus siinä tapauksessa että ehto evaluoituu True
<Ehto> Ehto, joka määrittää, palautetaanko <On True> vai <On False> -haara.
<OnFalse> Operaattorin paluuilmaus siinä tapauksessa, että ehto evaluoituu False
Ternaario-operaattorin kaksoissyntaksi

Tosiasiassa, <OnFalse>– ja <OnTrue>-operaattoreiden järjestys on vain käännetty, kun sitä verrataan ternääriseen perusoperaattoriin. Ensin on haara, joka palautetaan, jos ehto EI päde. Toiseksi suoritetaan haara, joka palautetaan, jos ehto pitää paikkansa.

x = (x, 42)

Ovelaa! Ehto boo pitää paikkansa, joten muuttujaan x syötetty paluuarvo on <OnTrue>-haara 42.

Ei hätää, jos tämä hämmentää sinua – et ole yksin. Voit selventää tuplasyntaksin lopullisesti tutkimalla yksityiskohtaisen blogiartikkelini.

Seuraava artikkeli: Python Ternary – Tuple Syntax Hack

Python One-Liners Book

Python-ohjelmoijat parantavat tietoteknisiä taitojaan näiden käyttökelpoisten one-liners-kirjojen avulla.

Python One-Liners

Python One-Liners opettaa sinut lukemaan ja kirjoittamaan niin sanottuja ”one-linereita”: tiiviitä lauseita hyödyllisestä toiminnallisuudesta, jotka on pakattu yhdelle ainoalle koodiriville. Opit systemaattisesti purkamaan ja ymmärtämään minkä tahansa Python-koodirivin ja kirjoittamaan kaunopuheista, tehokkaasti pakattua Pythonia kuin asiantuntija.

Kirjan viidessä luvussa käsitellään vinkkejä ja niksejä, säännöllisiä lausekkeita, koneoppimista, keskeisiä datatieteen aiheita ja hyödyllisiä algoritmeja. Yhden lauseen yksityiskohtaiset selitykset esittelevät tietotekniikan keskeisiä käsitteitä ja edistävät koodaus- ja analyysitaitojasi. Opit edistyneistä Python-ominaisuuksista, kuten listojen ymmärtämisestä, viipaloimisesta, lambda-funktioista, säännöllisistä lausekkeista, map- ja reduce-funktioista sekä viipaletehtävistä. Opit myös, miten:

– Hyödyntämään tietorakenteita reaalimaailman ongelmien ratkaisemiseen, kuten Boolen indeksoinnin käyttäminen sellaisten kaupunkien löytämiseen, joissa on keskimääräistä suurempi saastuminen
– Käyttämään NumPy:n perusominaisuuksia, kuten matriisi-, muoto-, akseli-, tyyppi-, lähetys-, edistynyt indeksointi-, viipalointi-, lajittelu-, haku-, aggregaatti- ja tilasto-ominaisuudet
– Laskemaan moniulotteisten tietorakenteiden perustilastoja ja K-Means-algoritmeja ei- valvottuun oppimiseen
– Luomaan edistyneempiä säännönmukaisia lauseita ryhmittelyä ja nimettyjä ryhmiä käyttämällä, negatiivisia lookaheadeja, karkaistuja merkkejä, välilyöntejä, merkkijoukkoja (ja negatiivisia merkkijoukkoja) sekä ahneita/niin ahneita operaattoreita
– Ymmärtää monenlaisia tietotekniikkaan liittyviä aiheita, kuten anagrammeja, palindromeja, superjoukkoja, permutaatioita, faktoriaaleja, alkulukuja, Fibonaccin lukuja, peittämistä, hakua ja algoritmista lajittelua

Kirjan loppuun mennessä osaat kirjoittaa Pythonia hienostuneimmillaan ja luoda ytimekkäitä, kauniita ”Python-taideteoksia” vain yhdellä rivillä.

Hanki Python-kertosäkeet nyt!!!

Työskennellessään hajautettujen järjestelmien tutkijana tohtori Christian Mayer löysi rakkautensa tietotekniikkaopiskelijoiden opettamiseen.

Auttaakseen opiskelijoita pääsemään korkeammalle Python-menestyksen tasolle hän perusti ohjelmointikoulutusta tarjoavan Finxter.com-sivuston. Hän on suositun ohjelmointikirjan Python One-Liners (NoStarch 2020) kirjoittaja, Coffee Break Python -sarjan omakustannekirjojen toinen kirjoittaja, tietotekniikan harrastaja, freelancer ja yhden maailman kymmenen suurimman Python-blogin omistaja.

Hänen intohimonsa ovat kirjoittaminen, lukeminen ja koodaaminen. Hänen suurin intohimonsa on kuitenkin palvella Finxterin kautta aloittelevia koodareita ja auttaa heitä parantamaan taitojaan. Voit liittyä hänen ilmaiseen sähköpostiakatemiaansa täällä.

Vastaa

Sähköpostiosoitettasi ei julkaista.