Treci la conținutul principal

Comprehensiunea listelor

Când o listă nouă este construită din valorile uneia existente, comprehensiunea listelor (list comprehension) îți permite să scrii asta cu mult mai puțin cod.

Să zicem că ai niște fructe și vrei o listă nouă care să le conțină doar pe cele cu litera „a” în nume.

Varianta lungă folosește o instrucțiune for cu un test condițional în interior:

Exemplu

Varianta lungă, cu o buclă:

Prompt
Scrie un program Python care creează o listă de fructe (apple, banana, cherry, kiwi, mango). Folosește o buclă for cu un test condițional pentru a crea o listă nouă care conține doar fructele care au litera "a" în nume. Afișează lista nouă.
Ieșire: program Python complet

Exemplu

Comprehensiunea listelor face același lucru într-o singură linie:

Prompt
Scrie un program Python care creează o listă de fructe (apple, banana, cherry, kiwi, mango). Folosește comprehensiunea listelor pentru a crea o listă nouă care conține doar fructele care au litera "a" în nume. Afișează lista nouă.
Ieșire: program Python complet

Sintaxa

Primești înapoi o listă nouă, iar cea originală rămâne așa cum era.

Sintaxă

main.py
newlist = [expression for item in iterable if condition == True]

Condiția

Gândește-te la condiție ca la un filtru: un element trece doar dacă testul se evaluează la True.

Exemplu

Păstrează toate elementele, cu excepția lui „apple”:

Prompt
Scrie un program Python care folosește comprehensiunea listelor pe o listă de fructe pentru a crea o listă nouă care acceptă toate elementele, cu excepția lui "apple". Afișează lista nouă.
Ieșire: program Python complet

Exemplu

Dacă omiți instrucțiunea if, se păstrează toate elementele:

Prompt
Scrie un program Python care folosește comprehensiunea listelor fără instrucțiunea if pentru a copia o listă de fructe într-o listă nouă. Afișează lista nouă.
Ieșire: program Python complet

Iterabilul

Iterabilul poate fi orice obiect iterabil, cum ar fi o listă, un tuplu sau o mulțime.

Exemplu

Și funcția range() funcționează ca iterabil:

Prompt
Scrie un program Python care folosește comprehensiunea listelor cu funcția range() pentru a crea o listă de numere de la 0 la 9. Afișează lista nouă.
Ieșire: program Python complet

Exemplu

Aceeași idee, păstrând doar numerele mai mici decât 5:

Prompt
Scrie un program Python care folosește comprehensiunea listelor cu range(10) pentru a crea o listă care acceptă doar numerele mai mici decât 5. Afișează lista nouă.
Ieșire: program Python complet

Expresia

Expresia este la început elementul curent din iterație, iar ceea ce produce ajunge în lista nouă. Asta înseamnă că poți transforma elementul pe drum.

Exemplu

Transformă fiecare valoare în majuscule pentru lista nouă:

Prompt
Scrie un program Python care folosește comprehensiunea listelor pe o listă de fructe pentru a transforma valorile din lista nouă în majuscule. Afișează lista nouă.
Ieșire: program Python complet

Exemplu

Fă ca fiecare valoare din lista nouă să fie „hello”:

Prompt
Scrie un program Python care folosește comprehensiunea listelor pe o listă de fructe pentru a seta toate valorile din lista nouă la 'hello'. Afișează lista nouă.
Ieșire: program Python complet

Exemplu

Pune „orange” oriunde ar apărea „banana”:

Prompt
Scrie un program Python care folosește comprehensiunea listelor pe o listă de fructe. Returnează "orange" în loc de "banana", păstrând toate celelalte elemente neschimbate. Afișează lista nouă.
Ieșire: program Python complet