Probléma: Hogyan lehet egysoros if feltételes hozzárendelést végrehajtani Pythonban?
Példa:
x = 2boo = True
Az x
értékét 42
-re akarjuk állítani, ha boo
True
, és egyébként nem teszünk semmit.
Merüljünk el a Pythonban ennek különböző megvalósítási módjaiban. Kezdjük egy áttekintéssel:
gyakorlat: Futtassuk le a kódot. Minden kimenet ugyanaz?
A következőkben belemerülünk az egyes módszerekbe, és növeljük az egysoros szupererőnket!
Tartalomjegyzék
1. módszer: Terner operátor
A legegyszerűbb terner operátor x if c else y
akkor adja vissza a x
kifejezést, ha a c
bóluszi kifejezés True
értékű. Ellenkező esetben, ha a c
kifejezés False
-re értékelődik, a terner operátor az y
alternatív kifejezést adja vissza.
<OnTrue> if <Condition> else <OnFalse>
Operand | Description |
---|---|
<OnTrue> | Az operátor visszatérési kifejezése abban az esetben, ha a feltétel kiértékelődik True |
<Feltétel> | A feltétel, amely meghatározza, hogy a <Az igaz> vagy a <A hamis> ágat adja vissza. |
<OnFalse> | Az operátor visszatérő kifejezése abban az esetben, ha a feltétel False |
Kanyarodjunk vissza a példafeladatunkhoz! A x
értékét 42
-re akarjuk állítani, ha boo
True
, és egyébként nem teszünk semmit. Íme, hogyan tehetjük ezt meg egyetlen sorban:
x = 42 if boo else x
Míg a terner operátor használata működik, felmerülhet a kérdés, hogy a kód áttekinthetősége érdekében nem lehetne-e elkerülni a ...else x
részt? A következő módszerben megtudhatod, hogyan!
Ha jobban meg akarod érteni a terner operátort, nézd meg az alábbi videót:
A kapcsolódó cikket is elolvashatod:
- Python egysoros terner
2. módszer: Egysoros If utasítás
Az előző módszerhez hasonlóan a x
értékét 42
-re akarjuk állítani, ha boo
True
, és egyébként nem teszünk semmit. De nem akarsz egy redundáns else ágat. Hogyan lehet ezt Pythonban megvalósítani?
A megoldás a terner operátor else részének kihagyására meglepően egyszerű – használj egy szabványos if utasítást else elágazás nélkül, és írd bele egyetlen kódsorba:
if boo: x = 42
Ha többet szeretnél megtudni arról, hogy mit lehet egyetlen sorba csomagolni, nézd meg az “If-Then-Else in One Line Python” című oktatóvideómat:
3. módszer: Ternary Tuple Syntax Hack
A ternary operátor rövidített formája a következő tuple szintaxis.
Syntax: Használhatja a (x, y)
tuple szintaxist, amely egy (x, y)
tuple-ból és egy c
feltételből áll, szögletes zárójelbe zárva. Itt van egy intuitívabb módja ennek a tuple-szintaxisnak az ábrázolásának.
(<OnFalse>, <OnTrue>)
Operandus | Megnevezés |
---|---|
<OnTrue> | Az operátor visszatérő kifejezése abban az esetben, ha a. feltétel kiértékelődik True |
<Feltétel> | A feltétel, amely meghatározza, hogy a <Az igaz> vagy a <A hamis> ágat adja vissza. |
<OnFalse> | Az operátor visszatérő kifejezése abban az esetben, ha a feltétel False |
Tényleg, a <OnFalse>
és <OnTrue>
operandusok sorrendje az alap terner operátorhoz képest csak felcserélődik. Először is, megvan az elágazás, amely akkor tér vissza, ha a feltétel NEM áll fenn. Másodszor, lefuttatod azt az ágat, amely akkor tér vissza, ha a feltétel teljesül.
x = (x, 42)
Okos! A boo
feltétel fennáll, így a x
változóba átadott visszatérési érték a <OnTrue>
ág 42
.
Ne aggódj, ha ez összezavar téged – nem vagy egyedül. A tuple szintaxisát egyszer és mindenkorra tisztázhatod, ha tanulmányozod a részletes blogcikkemet.
Kapcsolódó cikk: Python Ternary – Tuple Syntax Hack
Python One-Liners Book
Python programozók fejleszthetik számítástechnikai ismereteiket ezekkel a hasznos egysorosokkal.
A Python One-Liners megtanítja, hogyan kell “egysorosokat” olvasni és írni: egyetlen kódsorba csomagolt hasznos funkciók tömör kijelentései. Megtanulja, hogyan lehet szisztematikusan kibontani és megérteni bármely Python kódsort, és szakértőként ékesszóló, erőteljesen tömörített Pythont írni.
A könyv öt fejezete tippeket és trükköket, reguláris kifejezéseket, gépi tanulást, alapvető adattudományi témákat és hasznos algoritmusokat tárgyal. Az egysorosok részletes magyarázatai bemutatják a kulcsfontosságú számítástechnikai fogalmakat, és fokozzák a kódolási és elemzési készségeket. Olyan fejlett Python funkciókat ismerhet meg, mint a listaértés, a szeletelés, a lambda függvények, a reguláris kifejezések, a map és reduce függvények, valamint a szeletelési feladatok. Megtanulja továbbá, hogyan:
– Az adatszerkezetek kihasználása valós problémák megoldására, például Boolean indexeléssel az átlagon felüli szennyezettségű városok megtalálására
– A NumPy alapjai, például tömb, alak, tengely, típus, sugárzás, fejlett indexelés, szeletelés, rendezés, keresés, aggregálás és statisztika
– Többdimenziós adattömbök alapvető statisztikáinak kiszámítása és a K-Means algoritmusok a felügyelet nélküli tanuláshoz
– Fejlettebb reguláris kifejezések létrehozása a csoportosítás és a megnevezett csoportok használatával, negatív keresőfejek, kikerült karakterek, szóközök, karakterkészletek (és negatív karakterkészletek), valamint mohó/nem mohó operátorok
– Számítógép-tudományi témák széles körének megértése, beleértve az anagrammákat, palindromokat, szuperhalmazokat, permutációkat, faktoriálisok, prímszámok, Fibonacci-számok, homályosítás, keresés és algoritmikus rendezés
A könyv végére tudni fogja, hogyan írja a Pythont a legfinomabban, és hogyan hozzon létre tömör, gyönyörű “Python-műalkotásokat” csupán egyetlen sorban.
Szerezze be a Python egysorosokat most!!!
Mialatt az elosztott rendszerek kutatójaként dolgozott, Dr. Christian Mayer megtalálta a szerelmét az informatikai diákok tanítása iránt.
Azért, hogy segítsen a diákoknak magasabb szintű Python-sikereket elérni, megalapította a Finxter.com programozási oktatási weboldalt. A népszerű Python One-Liners című programozási könyv (NoStarch 2020) szerzője, a Coffee Break Python saját kiadású könyvsorozat társszerzője, az informatika szerelmese, szabadúszó, és a világ 10 legnagyobb Python-blogjának egyikének tulajdonosa.
Lelkesedése az írás, az olvasás és a kódolás. Legnagyobb szenvedélye azonban az, hogy a Finxteren keresztül szolgálja a feltörekvő programozókat, és segítse őket képességeik fejlesztésében. Ingyenes e-mail akadémiájához itt csatlakozhatsz.