🐍

List Comprehensions

Programare Python Intermediar 1 min citire 0 cuvinte

List Comprehensions

Introducere

List comprehensions sunt o modalitate concisa de a crea liste in Python. Combina crearea listei cu iterarea intr-o singura linie.

Sintaxa de Baza

[expresie for element in iterabil]

Exemplu simplu:

# Metoda traditionala
patrate = []
for x in range(5):
    patrate.append(x ** 2)
print(patrate)  # [0, 1, 4, 9, 16]

# Cu list comprehension
patrate = [x ** 2 for x in range(5)]
print(patrate)  # [0, 1, 4, 9, 16]

Cu Conditie (Filtrare)

[expresie for element in iterabil if conditie]
# Numere pare din range(10)
pare = [x for x in range(10) if x % 2 == 0]
print(pare)  # [0, 2, 4, 6, 8]

# Patratele numerelor pare
patrate_pare = [x ** 2 for x in range(10) if x % 2 == 0]
print(patrate_pare)  # [0, 4, 16, 36, 64]

Cu if-else (Transformare)

[expresie_true if conditie else expresie_false for element in iterabil]
# Inlocuieste impare cu 0
rezultat = [x if x % 2 == 0 else 0 for x in range(10)]
print(rezultat)  # [0, 0, 2, 0, 4, 0, 6, 0, 8, 0]

# Par/Impar
etichete = ["par" if x % 2 == 0 else "impar" for x in range(5)]
print(etichete)  # ['par', 'impar', 'par', 'impar', 'par']

Comprehensions Imbricate

# Matrice 3x3
matrice = [[i * 3 + j for j in range(3)] for i in range(3)]
print(matrice)  # [[0, 1, 2], [3, 4, 5], [6, 7, 8]]

# Aplatizare matrice
flat = [elem for rand in matrice for elem in rand]
print(flat)  # [0, 1, 2, 3, 4, 5, 6, 7, 8]

Exemple Practice

# Cuvinte care incep cu 'a'
cuvinte = ["ana", "bob", "alice", "dan"]
cu_a = [c for c in cuvinte if c.startswith("a")]
# ['ana', 'alice']

# Lungimile cuvintelor
lungimi = [len(c) for c in cuvinte]
# [3, 3, 5, 3]

# Uppercase pentru cuvinte scurte
rezultat = [c.upper() if len(c) <= 3 else c for c in cuvinte]
# ['ANA', 'BOB', 'alice', 'DAN']

Performanta

List comprehensions sunt mai rapide decat buclele for echivalente pentru ca sunt optimizate intern.

Cand sa NU Folosesti

  • Logica complexa - foloseste for normal
  • Efecte secundare (side effects)
  • Citibilitate redusa

Puncte Cheie pentru Examen

  • Sintaxa: [expr for x in iter]
  • Cu filtrare: [expr for x in iter if cond]
  • Cu transformare: [a if cond else b for x in iter]
  • if inainte de for = filtrare
  • if dupa for (cu else) = transformare

📚 Articole Corelate