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ă:
Ieșire: program Python complet
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = []
for x in fruits:
if "a" in x:
newlist.append(x)
print(newlist)
Exemplu
Comprehensiunea listelor face același lucru într-o singură linie:
Ieșire: program Python complet
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = [x for x in fruits if "a" in x]
print(newlist)
Sintaxa
Primești înapoi o listă nouă, iar cea originală rămâne așa cum era.
Sintaxă
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”:
Ieșire: program Python complet
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = [x for x in fruits if x != "apple"]
print(newlist)
Exemplu
Dacă omiți instrucțiunea if, se păstrează toate elementele:
Ieșire: program Python complet
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = [x for x in fruits]
print(newlist)
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:
Ieșire: program Python complet
newlist = [x for x in range(10)]
print(newlist)
Exemplu
Aceeași idee, păstrând doar numerele mai mici decât 5:
Ieșire: program Python complet
newlist = [x for x in range(10) if x < 5]
print(newlist)
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ă:
Ieșire: program Python complet
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = [x.upper() for x in fruits]
print(newlist)
Exemplu
Fă ca fiecare valoare din lista nouă să fie „hello”:
Ieșire: program Python complet
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = ['hello' for x in fruits]
print(newlist)
Exemplu
Pune „orange” oriunde ar apărea „banana”:
Ieșire: program Python complet
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = [x if x != "banana" else "orange" for x in fruits]
print(newlist)