Sari la conținutul principal
Bazele Python2026-07-29 · 8 min de citit

Înțelegerile listei Python explicate: când să le folosiți și când să nu le folosiți (2026)

Listele de înțelegere sunt una dintre cele mai greșit înțelese caracteristici ale lui Python. Începătorii le evită pentru că „par complicate”. Intermediarii le folosesc în exces până când fiecare al treilea rând este o linie imbricată pe care nimeni nu o poate citi. Acest tutorial remediază ambele greșeli.

Vom acoperi: forma exactă din trei părți pe care o urmează fiecare înțelegere a listei, benchmark-uri vs for / map / filter, cele patru modele pe care ar trebui să le recunoașteți la vedere și o regulă strictă pentru când să opriți folosirea înțelegerilor și să ajungeți la o buclă simplă.

Forma: [ ce | sursa | filtru]

Fiecare înțelegere a listei are trei părți, în această ordine:

▶ PYTHONeditable · runs in your browser

Citirea cu voce tare: "dați-mi `expresie` pentru fiecare `element` din `iterabil`, dar numai când `condiția` este adevărată.”

Începeți cu bucla echivalentă „for”, apoi restrângeți-o:

▶ PYTHONeditable · runs in your browser

Același rezultat — [0, 4, 16, 36, 64]. Înțelegerea este pe o singură linie, alocă lista în avans (fără apeluri append), iar compilatorul de coduri de octeți al lui Python emite LIST_APPEND — o cale rapidă care omite căutarea atributului pe .append.

Benchmark: înțelegere vs for-loop vs hartă+filtru

Construirea unei liste de numere pare la pătrat de la 0 la 100.000:

| Metoda | Timp (µs) | ruda |

|---|---|---|

| for + .append | 4.800 | 1,9× linia de bază |

| listă(hartă(..., filtru(...))) | 3.200 | 1,3× linia de bază |

| Înțelegerea listei | 2.500 | 1,0× (cel mai rapid) |

Măsurat pe Python 3.13, o singură rulare de 1000 de iterații. Înțelegerile câștigă, deoarece nu există apeluri de funcție pe element - expresia este aliniată.

Acestea fiind spuse: nu micro-optimiza. Pentru o listă de 100 de elemente, toate trei se completează în mai puțin de 100 µs. Alegeți mai întâi lizibilitatea.

Cele patru modele pe care ar trebui să le recunoașteți

1. Transformă fiecare element

▶ PYTHONeditable · runs in your browser

Înlocuire drop-in pentru map(str.title, names), dar nu are nevoie de listă(...).

2. Filtrați fără transformare

▶ PYTHONeditable · runs in your browser

Mai curat decât listă(filtru (lambda n: n > 0, numere)). Nu este nevoie de lambda.

3. Filtrați ȘI transformați

▶ PYTHONeditable · runs in your browser

Aici înțelegerile bat în mod clar alternativele - încercați să o scrieți cu „hartă” + „filtru” și numărați parantezele.

4. Aplatizați o listă imbricată

▶ PYTHONeditable · runs in your browser

Ordinea contează: for row in matrix se citește de la stânga la dreapta ca buclele imbricate echivalente for. Acesta este singurul model în care înțelegerile imbricate rămân lizibile - orice lucru mai profund are nevoie de o buclă.

Când să OPREȚI folosirea înțelegerilor

Trei reguli grele, în ordinea importanței:

1. Trei sau mai multe clauze `for` → folosiți o buclă. O înțelegere triply imbricată este de necitit chiar și pentru persoana care a scris-o acum 20 de minute.

▶ PYTHONeditable · runs in your browser

2. Efecte secundare → folosiți o buclă. Înțelegerile sunt pentru construirea unei liste. Dacă apelați o funcție pentru efectele sale secundare (scrierea într-un fișier, trimiterea unei cereri), utilizați o buclă. [print(x) for x in items] este un miros de cod — creați o listă de aruncat cu Niciuna.

3. Expresia are mai mult de 60 de caractere → despărțiți-o. Dacă trebuie să vă gândiți mai mult de 3 secunde pentru a o analiza, împărțiți-o într-o funcție numită sau într-o buclă.

Dictează și stabilește înțelegeri — aceeași formă

Aceeași sintaxă, diferite paranteze:

▶ PYTHONeditable · runs in your browser

Dict comprehenses sunt utile în special pentru inversarea unei mapări ({v: k pentru k, v în d.items()}) sau construirea unui tabel de căutare dintr-o listă.

Generator de expresii — vărul prietenos cu memoria

Aruncă parantezele, păstrează parantezele:

▶ PYTHONeditable · runs in your browser

Pentru sum, min, max, any, all, ", ".join(...) și alte funcții care repetă o dată, preferă expresia generator - salvează alocarea intermediară a listei. Pentru orice trebuie să indexați sau să repetați de două ori, folosiți o înțelegere.

Practică: trei exerciții

Rescrieți fiecare folosind o listă de înțelegere. Soluțiile sunt la final.

1. Având în vedere cuvinte = ["pisica", "elefantul", "câinele", "hipopotam"], obțineți o listă de cuvinte mai lungi de 4 caractere, toate cu majuscule.

2. Având în vedere data = [{"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}], extrageți o listă doar cu numele.

3. Având în vedere perechi = [(1, 2), (3, 4), (5, 6)], obțineți o listă a sumelor fiecărei perechi.

Soluții:

▶ PYTHONeditable · runs in your browser

Înțelegerea listelor este o caracteristică caracteristică Python - a ști când să ajungeți la una (și când să o lăsați ca buclă for) este un marker de încredere al fluenței la nivel intermediar. Exersați prin rescrierea buclelor existente for + .append pe care le găsiți în propriul cod; nu toți ar trebui să devină o înțelegere, dar cei care ar trebui să se simtă evidente după o săptămână.

Pasul următor: încercați 5 lecții interactive despre înțelegerea listei cu Python real care rulează în browser și un mentor AI la fiecare pas.

Ești gata să-l încerci?

15 lecții gratuite după o înscriere gratuită — fără card. Eșantionați platforma, apoi decideți.

Începe gratuit →

Or unlock every lesson

Pro — $12/mo, unlimited AI, cancel any time. Refund within 14 days worldwide.

See Pro plans →

Get one Python lesson + one career idea every Friday

No spam, no "buy our course now". Three bullets, every Friday. Unsubscribe with one click.