Cum să utilizați înțelegerile din lista Python (și când nu le folosiți)

Cum să utilizați înțelegerile din lista Python (și când nu le folosiți) / Programare

S-ar putea să fi auzit de înțelegerea listei Python. Poate că este chiar ceva pe care l-ai folosit fără o înțelegere reală. Acum este timpul să învățăm, deoarece acoperim tot ce trebuie să știți despre înțelegerea listei în Python.

Înainte de a începe, merită să vă răzgândiți cum funcționează matricele și listele în Python Cum funcționează matricele și listele în Python Cum funcționează matricele și listele în Python Arhivele și listele sunt unele dintre cele mai utile structuri de date în programare - deși puțini oameni le folosesc la întregul lor potențial. Citește mai multe și cum se utilizează dicționarele Python Dicționarul Python: Cum îl poți folosi pentru a scrie mai bine un dicționar de tip Python: Cum îl poți folosi pentru a scrie un cod mai bun Gândiți-vă la un dicționar Python ca seturi neregulate de perechi cheie-valoare. În acest articol vă prezentăm lucrul cu ei și folosirea acestora pentru a vă îmbunătăți codul Python. Citeste mai mult .

Ce este înțelegerea de pe lista Python?

Lista de înțelegere sună complexă, dar într-adevăr nu este. În Python, este pur și simplu o modalitate rapidă de a filtra sau rafina o listă bazată pe anumite criterii.

Aceasta vă salvează să scrieți mai multe rânduri de cod (mai ales dacă sunteți într-o buclă deja) și păstrează claritatea codului dvs..

Fiți atent, cu toate acestea, deoarece înțelegerea listei nu este întotdeauna răspunsul. Este ușor să vă dați drumul și să scrieți comprehensii complexe greu de citit. Câteodată scrierea unui cod mai bun este mai bine, mai ales dacă ajută la citire. Rămâneți la sarcini simple și păstrați codul la o singură responsabilitate.

Cum se utilizează înțelegerea listelor în Python

Notă: Toate aceste exemple folosesc Python 3.6. Dacă nu sunteți sigur de diferențele dintre Python 3 și Python 2, asigurați-vă că ați citit Python FAQ Întrebări cele mai frecvente despre programarea Python Întrebările cele mai frecvente despre programarea Python În acest articol, vă vom trece prin tot ce trebuie să știți despre Python ca începător. Citiți mai multe, unde acoperim această întrebare și multe altele.

Luați în considerare acest bit de cod care copiază un matrice și transformă fiecare literă în acea matrice într-o majusculă. Ea face acest lucru prin looping prin fiecare element în matrice:

litere = ['a', 'b', 'c', 'd'] print (litere) upper_letters = []

Acum, aici este aceeași logică exactă, cu excepția cazului în care se face într-o singură linie de cod utilizând o înțelegere de bază Python:

litere = ['a', 'b', 'c', 'd'] imprimare (litere) upper_letters = [x.upper () 

După cum puteți vedea, rezultatul este exact același, însă procesul implică un număr semnificativ mai mare de coduri fără înțelegerea listei.

Să aruncăm acest exemplu simplu în jos.

Acest exemplu creează o listă numită scrisori. Aceasta stochează literele minuscule “A”, “b”, “c”, și “d”. Presupunând că doriți ca toate aceste elemente din listă să fie majuscule? Ei bine, fără o înțelegere a listei, trebuie să creați o listă nouă pentru a stoca rezultatul (numit upper_letters), buclă peste fiecare element din scrisori listă, convertiți fiecare literă (și păstrați-o în rezultat-opțional, dar de bună practică), apoi adăugați litera mare în noua listă. Ce mult de lucru!

Cunoașterea listei este aproape exact echivalentă cu cea a buclei. Se spune în mod eficient “pentru fiecare literă din lista de litere, convertiți-le la majuscule și returnați rezultatul ca o listă nouă.”

Lista de înțelegere poate funcționa numai în liste și trebuie să returneze o listă nouă. Să săpăm mai adânc.

Există trei părți la o înțelegere a listei (vom acoperi partea a treia de mai jos). Lista înțelegerilor trebuie să înceapă și să se încheie cu paranteze pătrate ([ și ]). Acesta a fost modul în care a fost proiectat și îi permite lui Python să știe că veți lucra cu o listă.

În interiorul parantezelor pătrate, trebuie să începeți cu rezultatul. Aceasta este ceea ce doriți să faceți cu fiecare element de listă.

În exemplul de mai sus, următorul cod convertește fiecare element (referit de numele variabilei X) la majuscule folosind superior() , care face parte din biblioteca de bază Python:

[x.upper () # nu se va executa, doar jumătate din înțelegerea în acest moment

Apoi, trebuie să îi spuneți Python care listă să lucreze și să atribuiți fiecărui element individual unei variabile. Aceasta este exact la fel ca și for loop-ul în exemplul cu lungă durată:

pentru x în litere

De fiecare dată când buclă trece peste listă, valoarea lui X se va schimba oricare ar fi elementul curent. Va începe ca “A”, și apoi “b”, si asa mai departe.

Dacă puneți totul împreună (și alocați-l unei variabile numite upper_letters), veți fi terminat:

upper_letters = [x.upper () pentru x în litere]

Acum, upper_letters va conține o listă de litere mari, începând cu “A”, și apoi “B” si asa mai departe.

A treia parte a înțelegerii în listă în Python

După cum am menționat mai sus, există oa treia parte pentru a înțelege comprehensiunea.

După ce ați făcut cele două pași de mai sus, puteți include o condiție opțională. Este ca și cum ai folosi un dacă declarație de spus “dă-mi o listă nouă, bazată pe această listă veche, dar includ numai elemente care îmi satisfac criteriile”.

Iată cum arată:

vârste = [1, 34, 5, 7, 3, 57, 356] print (vârste) old_ages = [x pentru x în vârstă dacă x> 10]

Acest exemplu folosește o listă nouă numită vârstele. old_ages lista este asamblată folosind o înțelegere a listei. dacă condiția de la sfârșit înseamnă că numai elementele de listă care îndeplinesc criteriile sunt inserate în noua listă. În acest exemplu, sunt permise orice vârste mai mari de zece.

Atunci când nu se utilizează înțelegerea listei Python

Lista de înțelegere este uimitoare odată ce ai atârnat de ea, dar nu este utilă în toate circumstanțele. Probabil nu ar trebui să-l utilizați atunci când aveți nevoie de mai mult de o condiție:

old_ages = [x pentru x în vârstă dacă x> 10 și x < 100 and x is not None]

Acest cod funcționează, dar începe să devină lung și confuz. În mod similar, este posibil ca nimic altceva decât un simplu apel în funcție să nu funcționeze. În acest exemplu, veți primi o eroare:

litere = ['a', 'b', 'c', 'd', 2] tipărire (litere) upper_letters = [x.upper ()

Acesta este codul perfect valabil, dar, pe măsură ce nu puteți scrie un număr mare, acesta nu va funcționa. Acesta este un caz în care bucla mai lungă este de fapt preferabilă, deoarece veți putea face unele tratamente de excepție:

litere = ['a', 'b', 'c', 'd', 1] imprimare (litere) upper_letters = [] pentru litera în litere: try: result = letter.upper () upper_letters.append AttributeError: trece # nu face nimic print (upper_letters)

Porniți Punerea în aplicare a înțelegerilor din lista Python

Acum că știți cât de ușor este înțelegerea listei în Python, nu există niciun motiv să nu o utilizați. Nu uitați să păstrați-o simplu și luați în considerare lizibilitatea mai presus de toate.

Poate veti controla un Arduino cu Python Cum sa programati si sa controlati un Arduino cu Python Cum sa programati si sa controlati un Arduino cu Python Din pacate, este imposibil sa programati direct un arduino in Python, dar il puteti controla prin USB folosind Python program. Iată cum. Citește mai mult, sau ce despre un DIY Python de rețea de securitate camera DIY Pan și Tilt Network Security Cam cu zmeura Pi DIY Pan și Tilt Network Security Cam cu zmeură Pi Aflați cum să faceți camera de supraveghere de la distanță și panoramare de securitate cu o zmeura Pi. Acest proiect poate fi finalizat într-o dimineață cu doar cele mai simple părți. Citeste mai mult ?

Explorați mai multe despre: Coding Tutorials, Python.