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
A terner operátor műveletei

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

Python Ternary Tuple Syntax

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
A terner operátor szintaxisa

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.

Python One-Liners

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.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.