Problemă: Cum să efectuați asignări condiționale if pe o singură linie în Python?

Exemplu: Să zicem că începeți cu următorul cod.

x = 2boo = True

Vreți să setați valoarea lui x la 42 dacă boo este True, și să nu faceți nimic în caz contrar.

Să ne scufundăm în diferitele moduri de a realiza acest lucru în Python. Începem cu o prezentare generală:

Exercițiu: Rulați codul. Toate ieșirile sunt la fel?

În continuare, vă veți scufunda în fiecare dintre aceste metode și vă veți spori superputerea de a scrie un singur rând!

Tabloul de materii

Metoda 1: Operatorul ternar

Cel mai de bază operator ternar x if c else y returnează expresia x dacă expresia booleană c se evaluează la True. În caz contrar, dacă expresia c se evaluează la False, operatorul ternar returnează expresia alternativă y.

<OnTrue> if <Condition> else <OnFalse>
Operand Descriere
<OnTrue> Expresia de întoarcere a operatorului în cazul în care expresia condiția se evaluează la True
<Condition> Condiția care determină dacă se returnează ramura <On True> sau <On False>.
<OnFalse> Expresia de întoarcere a operatorului în cazul în care condiția se evaluează la False
Operanzi ai operatorului ternar

Să revenim la problema noastră de exemplu! Doriți să setați valoarea lui x la 42 dacă boo este True, și să nu faceți nimic în caz contrar. Iată cum se face acest lucru într-o singură linie:

x = 42 if boo else x

În timp ce utilizarea operatorului ternar funcționează, vă puteți întreba dacă este posibil să evitați partea ...else x pentru claritatea codului? În metoda următoare, veți afla cum!

Dacă aveți nevoie să vă îmbunătățiți înțelegerea operatorului ternar, urmăriți următorul videoclip:

Puteți citi și articolul aferent:

  • Python One Line Ternary

Metoda 2: Single-Line If Statement

Ca și în metoda anterioară, doriți să setați valoarea lui x la 42 dacă boo este True, și să nu faceți nimic în caz contrar. Dar nu doriți să aveți o ramură else redundantă. Cum se poate face acest lucru în Python?

Soluția pentru a sări peste partea else a operatorului ternar este surprinzător de simplă – folosiți o instrucțiune if standard fără ramura else și scrieți-o într-o singură linie de cod:

if boo: x = 42

Pentru a afla mai multe despre ceea ce puteți împacheta într-o singură linie, urmăriți videoclipul meu tutorial „If-Then-Else in One Line Python”:

Metoda 3: Hack de sintaxă a tuplelor ternare

Sintaxa tuplelor ternare Python

O formă prescurtată a operatorului ternar este următoarea sintaxă a tuplelor.

Sintaxa: Se poate utiliza sintaxa de tuple (x, y) care constă într-un tuplu (x, y) și o condiție c închisă într-o paranteză pătrată. Iată un mod mai intuitiv de a reprezenta această sintaxă de tuple.

(<OnFalse>, <OnTrue>)
Operand Descriere
<OnTrue> Expresia de întoarcere a operatorului în cazul în care condiția se evaluează la True
<Condition> Condiția care determină dacă se returnează ramura <On True> sau <On False>.
<OnFalse> Expresia de întoarcere a operatorului în cazul în care condiția este evaluată la False
Sintaxa tuplelor operatorului ternar

De fapt, ordinea operanzilor <OnFalse> și <OnTrue> este pur și simplu inversată în comparație cu operatorul ternar de bază. În primul rând, aveți ramura care este returnată în cazul în care condiția NU se menține. În al doilea rând, se execută ramura care este returnată dacă condiția se menține.

x = (x, 42)

Inteligent! Condiția boo se menține, astfel încât valoarea de întoarcere trecută în variabila x este ramura <OnTrue> 42.

Nu vă faceți griji dacă acest lucru vă derutează – nu sunteți singuri. Puteți clarifica sintaxa tuplelor o dată pentru totdeauna studiind articolul meu detaliat de pe blog.

Articol conex: Python Ternary – Tuple Syntax Hack

Python One-Liners Book

Programatorii Python își vor îmbunătăți abilitățile de informatică cu aceste one-liners utile.

Python One-Liners

Python One-Liners vă va învăța cum să citiți și să scrieți „one-liners”: declarații concise de funcționalitate utilă împachetate într-o singură linie de cod. Veți învăța cum să descompuneți și să înțelegeți sistematic orice linie de cod Python și să scrieți Python elocvent și puternic comprimat ca un expert.

Cele cinci capitole ale cărții acoperă sfaturi și trucuri, expresii regulate, învățare automată, subiecte de bază din știința datelor și algoritmi utili. Explicațiile detaliate ale unor replici introduc concepte cheie din domeniul informaticii și vă stimulează abilitățile de codare și de analiză. Veți învăța despre caracteristicile avansate ale limbajului Python, cum ar fi înțelegerea listelor, felierea, funcțiile lambda, expresiile regulate, funcțiile map și reduce și sarcinile de feliere. De asemenea, veți învăța cum să:

– Să valorificați structurile de date pentru a rezolva probleme din lumea reală, cum ar fi utilizarea indexării booleene pentru a găsi orașe cu o poluare peste medie
– Să utilizați elementele de bază ale NumPy, cum ar fi array, shape, axis, type, broadcasting, indexare avansată, slicing, sortare, căutare, agregare și statistici
– Să calculați statisticile de bază ale array-urilor de date multidimensionale și algoritmii K-Means pentru învățarea nesupravegheată
– Să creați expresii regulate mai avansate utilizând gruparea și grupurile numite, lookaheads negative, caractere scăpate, spații albe, seturi de caractere (și seturi de caractere negative) și operatori greedy/nongreedy
– Înțelegerea unei game largi de subiecte de informatică, inclusiv anagrame, palindromuri, superseturi, permutări, factoriale, numere prime, numere Fibonacci, ofuscare, căutare și sortare algoritmică

Până la sfârșitul cărții, veți ști cum să scrieți Python la modul cel mai rafinat și să creați bucăți concise și frumoase de „artă Python” în doar o singură linie.

Obțineți acum Python One-Liners!!!

În timp ce lucra ca cercetător în domeniul sistemelor distribuite, Dr. Christian Mayer și-a descoperit dragostea pentru predarea studenților în domeniul informaticii.

Pentru a-i ajuta pe studenți să atingă niveluri mai înalte de succes în Python, a fondat site-ul de educație în programare Finxter.com. Este autorul popularei cărți de programare Python One-Liners (NoStarch 2020), coautor al seriei de cărți autopublicate Coffee Break Python, pasionat de informatică, freelancer și proprietar al unuia dintre primele 10 cele mai mari bloguri Python din lume.

Pasiunile sale sunt scrisul, cititul și programarea. Dar cea mai mare pasiune a sa este să servească aspiranții la codare prin Finxter și să îi ajute să își sporească abilitățile. Vă puteți alătura academiei sale gratuite de e-mail aici.

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.