Înțelegerea listei în Python - Cu exemple

Publicat: 2022-02-18

În Python, listele de înțelegere vă ajută să creați liste noi din iterabile existente, cum ar fi liste, șiruri și tupluri.

Sintaxa lor succintă vă permite să creați liste noi într-o singură linie de cod. Și acest tutorial vă va învăța cum puteți face asta.

În următoarele câteva minute, veți învăța:

  • Cum să creați o listă nouă folosind bucle for ,
  • Sintaxa pentru utilizarea listelor de înțelegere în Python și
  • Cum se modifică listele de înțelegere cu declarația condiționată if .

În plus, veți codifica și câteva exemple care vă vor ajuta să înțelegeți mai bine înțelegerea listelor.

Să ne scufundăm.

Cum se creează liste Python folosind for Loops

Să presupunem că aveți un număr de listă de numere nums . Și ați dori să creați o altă listă care să conțină cubul tuturor numerelor în nums . Iată cum o veți face folosind o buclă for în Python:

 nums = [2,3,5,7] num_cubes = [] for num in nums: num_cubes.append(num**3) print(num_cubes) # Output [8, 27, 125, 343]

În codul de mai sus, avem următorii pași:

  • Inițializați o listă goală num_cubes .
  • Parcurgeți lista de nums .
  • Accesați fiecare număr num , și calculați-i cubul folosind operatorul de exponențiere: num**3 .
  • În cele din urmă, adăugați valoarea cubului la lista num_cubes

Notă: În Python, operatorul de exponențiere ** este folosit cu sintaxa: num**pow —numărul num este ridicat la puterea pow .

Cu toate acestea, puteți face acest lucru mai ușor folosind înțelegerea listei în Python. Să continuăm să învățăm sintaxa acesteia.

Sintaxa de înțelegere a listei Python

Sintaxa generală pentru înțelegerea listelor este prezentată mai jos.

 <new_list> = [<expression> for <item> in <iterable>]

Să analizăm sintaxa de mai sus.

  • În Python, listele sunt delimitate de o pereche de paranteze drepte [] — prin urmare trebuie să includeți declarația de înțelegere a listei în [] .
  • <item> în <iterable> înseamnă că treceți în buclă printr-un iterabil. Orice obiect Python prin care puteți accesa elemente individuale, cum ar fi liste, tupluri și șiruri, sunt iterabile.
  • <expression> este rezultatul pe care ați dori să o calculați pentru fiecare <item> din <iterable> .

Și asta sună simplu, da?

În esență, ați dori să faceți ceva pentru toate articolele din listă (sau orice iterabil) pentru a obține o nouă listă .

Folosind aceasta, putem simplifica sintaxa, așa cum se arată în imaginea de mai jos.

listă-comprehensiune-sintaxă
Sintaxa de înțelegere a listei Python (Imagine după autor)

Acum că ați învățat sintaxa, este timpul să începeți să codificați. Puteți folosi IDE-ul online Python al Geekflare pentru a urma aceste exemple. Sau le puteți rula pe mașina dvs. locală.

Exemple de înțelegere a listelor Python

În secțiunea anterioară, ați creat o nouă listă num_cubes din nums . Să începem prin a rescrie asta folosind înțelegerea listei.

Utilizarea listei de înțelegere cu numere

Acum să folosim sintaxa simplificată după cum urmează:

  • <do-this> : Aici, trebuie să cubiți fiecare num . Deci înlocuiți <do-this> cu num**3 .
  • <all-items> : variabila de buclă este num — numerele individuale din listă.
  • <this-list> : Lista existentă pe care o avem este nums .
  • Și [num**3 for num in nums] este expresia finală.

Punând totul împreună, avem următorul fragment de cod:

 num_cubes = [num**3 for num in nums] print(num_cubes) # Output [8, 27, 125, 343]

Felicitări, ați codificat prima înțelegere a listei.

Mergând mai departe, să lucrăm cu șiruri Python.

Utilizarea listei de înțelegere cu șiruri

Să presupunem că aveți authors listei — puteți rescrie lista de mai jos cu autorii tăi preferați.

 authors = ["jane austen","george orwell","james clear","cal newport"]

Observați cum numele autorilor sunt cu litere mici în lista de mai sus. Am dori acum să le formatăm în cazul titlului și să le stocăm într-o nouă listă numită author_list .

Notă: În Python, metoda șirurilor title() acceptă un șir ca argument și returnează o copie a șirului formatat în cazul titlului. Adică prima literă a fiecărui cuvânt este scrisă First-name Last-name

Deci, iată tot ce trebuie să faci:

  • parcurge lista de authors și pentru fiecare author din listă,
  • apelați author.title() pentru a obține o copie a șirului cu majuscule și minuscule.

Și codul Python pentru aceasta este afișat mai jos:

 authors = ["jane austen","george orwell","james clear","cal newport"] author_list = [author.title() for author in authors] print(author_list) # Output ['Jane Austen', 'George Orwell', 'James Clear', 'Cal Newport']

În rezultatul de mai sus, observați cum au fost formatate numele tuturor autorilor în cazul titlului, ceea ce ne-am dorit.

Utilizarea listei de înțelegere cu mai multe liste

Până acum, ați învățat cum să utilizați înțelegerea listelor pentru a crea liste noi dintr-o listă existentă. Acum să învățăm cum să creăm o nouă listă din mai multe liste.

De exemplu, luați în considerare această problemă: aveți două liste l_arr și b_arr care conțin lungimile și lățimile a 4 dreptunghiuri.

Și trebuie să creați o nouă area de listă care să includă zona acestor 4 dreptunghiuri. Amintiți-vă, area = length * breadth .

 l_arr = [4,5,1,3] b_arr = [2,1,7,9]

Veți avea nevoie de elemente din ambele liste ( l_arr și b_arr ) pentru a calcula suprafața. Și o puteți face folosind funcția zip() a lui Python.

Notă: În Python, funcția zip() preia unul sau mai multe iterabile ca argumente cu sintaxa zip(*iterables) . Apoi returnează un iterator de tupluri, unde tuplu i conține elementul i din fiecare dintre iterabile.

Următoarea imagine descrie acest lucru în detaliu. Aveți 4 valori în l_arr și b_arr , deci intervalul de indici este de la 0 la 3. După cum puteți vedea, tuplul 0 conține l_arr[0] și b_arr[0] , tuplul 1 conține l_arr[1] și b_arr[1] și așa mai departe.

funcția python-zip
Funcția Python zip() (Imagine după autor)

Prin urmare, puteți trece prin zip(l_arr,b_arr) după cum se arată mai jos:

 area = [l*b for l,b in zip(l_arr,b_arr)] print(area) # Output [8,5,7,27]

În secțiunea următoare, veți învăța cum să utilizați instrucțiunile condiționate în cadrul unei liste de înțelegere.

Înțelegerea listei Python cu sintaxa condițiilor

Să începem prin a construi pe sintaxa anterioară pentru înțelegerea listei.

Iată sintaxa:

 <new_list> = [<expression> for <item> in <iterable> if <condition>]

În loc să calculați <expression> pentru toate elementele, ați dori să o faceți numai pentru acele elemente care îndeplinesc o anumită <condition> — unde, condition := True . Și acest lucru duce la o sintaxă simplificată, așa cum se arată:

lista-comprehensiune-cu-sintaxa-conditie
Înțelegerea listei Python cu sintaxa condiției (Imagine după autor)

Cu asta, să trecem la exemple de cod.

Înțelegerea listei Python cu exemple de condiții

#1. Vi se dă șirul „Învăț Python în 2022” . Doriți să obțineți o listă cu toate cifrele din acest șir. Deci cum o faci?

În Python, <char>.isdigit() acționează asupra unui caracter <char> și returnează True dacă este o cifră (0-9); altfel returnează False .

Fragmentul de cod de mai jos arată cum puteți colecta lista tuturor cifrelor din șirul str1 .

 str1 = "I'm learning Python3 in 2022" digits = [char for char in str1 if char.isdigit()] print(digits) # Output ['3', '2', '0', '2', '2']

În codul de mai sus:

  • faci buclă prin șirul str1 ,
  • accesați fiecare char pentru a verifica dacă este o cifră folosind metoda isdigit() și
  • adăugați char la digits noi din listă numai dacă este o cifră.

Să luăm un alt exemplu.

#2. Ai o listă de fructe. Și ați dori să creați o listă starts_with_b care să conțină toate fructele din lista de fruits care încep cu b . Puteți folosi metoda startswith() pentru a scrie condiția.

<str>.startswith('char') returnează True dacă <str> începe cu 'char'; altfel returnează False .

 fruits = ['blueberry','apple','banana','orange','cherry'] starts_with_b = [fruit for fruit in fruits if fruit.startswith('b')] print(starts_with_b) # Output ['blueberry', 'banana']

În rezultatul de mai sus, obținem 'blueberry' și 'banana' care sunt cele două fructe care încep cu 'b' în lista de fruits , așa cum ne așteptam.

Și asta încheie discuția noastră despre înțelegerea listelor.

Concluzie

Sper că acest tutorial v-a ajutat să înțelegeți listele de înțelegere în Python.

Să rezumam:

  • Puteți folosi [<do this> for <all-items> in <this-list>] pentru a crea o nouă listă folosind lista de înțelegere.
  • În plus, puteți utiliza sintaxa [<do this> for <all-items> din <this-list> if <condition-is-True>] cu instrucțiunea condițională if .

În plus, ați codificat și mai multe exemple. Ca pas următor, puteți încerca să rescrieți unele dintre buclele existente Python pentru crearea listei folosind înțelegerea listei. Codare fericită! Până la următorul tutorial.

Acum puteți vedea cum să convertiți o listă într-un dicționar sau să aflați cum să gestionați fișierele în Python.