-
Recapitulare funcții lambda și expresii funcționale
- Ce sunt funcțiile lambda și de ce sunt utile
- Exemple de utilizare a funcțiilor lambda
- Expresiile funcționale map(), filter(), reduce()
-
Lucrul avansat cu funcții lambda în combinație cu expresiile funcționale
- Combinarea funcțiilor lambda cu map(), filter() și reduce()
- Exemple de utilizare avansată a funcțiilor lambda și expresiilor funcționale
- Exercițiu: utilizați funcții lambda și expresii funcționale pentru a calcula media aritmetică a unei liste de numere
-
Funcții lambda în combinație cu operatorul ternar
- Utilizarea operatorului ternar în funcții lambda
- Exemple de funcții lambda cu operatorul ternar
- Exercițiu: creați o funcție lambda cu operatorul ternar pentru a returna cel mai mare număr divizibil cu 3 dintre două numere
-
Crearea de funcții de ordonare personalizate cu funcții lambda
- Utilizarea funcțiilor lambda în argumentul ‘key’ al funcției sorted()
- Exemple de funcții de ordonare personalizate cu funcții lambda
- Exercițiu: utilizați o funcție lambda pentru a sorta o listă de cuvinte în ordinea lungimii lor
-
Funcții lambda în combinație cu decoratori
- Utilizarea funcțiilor lambda ca decoratori
- Exemple de decoratori creați cu funcții lambda
- Exercițiu: creați un decorator cu o funcție lambda pentru a înregistra apelurile unei funcții
-
Utilizarea funcțiilor lambda în contextul programării funcționale
- Programarea funcțională și rolul funcțiilor lambda
- Exemple de utilizare a funcțiilor lambda în contextul programării funcționale
- Exercițiu: scrieți un program funcțional care utilizează funcții lambda pentru a procesa o listă de date
Exemple și exerciții pentru fiecare subpunct:
Exemplu: combinarea funcțiilor lambda cu map(), filter() și reduce()
from functools import reduce
numere = [1, 2, 3, 4, 5]
patrate = list(map(lambda x: x ** 2, numere))
print(patrate) # Output: [1, 4, 9, 16, 25]
numere_pare = list(filter(lambda x: x % 2 == 0, numere))
print(numere_pare) # Output: [2, 4]
suma = reduce(lambda x, y: x + y, numere)
print(suma) # Output: 15
Exercițiu:
Utilizați funcții lambda și expresii funcționale pentru a calcula media aritmetică a unei liste de numere.
Exemplu: funcție lambda cu operatorul ternar
max_divizibil_cu_3 = lambda x, y: x if x % 3 == 0 and x >= y else y if y % 3 == 0 else None
print(max_divizibil_cu_3(9, 6)) # Output: 9
print(max_divizibil_cu_3(10, 5)) # Output: None
Exercițiu:
Creați o funcție lambda cu operatorul ternar pentru a returna cel mai mare număr divizibil cu 3 dintre două numere.
Exemplu: utilizarea funcției lambda în argumentul ‘key’ al funcției sorted()
cuvinte = ["casa", "masina", "caine", "pisica", "elefant"]
cuvinte_sortate = sorted(cuvinte, key=lambda x: len(x))
print(cuvinte_sortate) # Output: ['casa', 'caine', 'pisica', 'masina', 'elefant']
Exercițiu:
Utilizați o funcție lambda pentru a sorta o listă de cuvinte în ordinea lungimiilor.
Exemplu: decoratori creați cu funcții lambda
import time
log_decorator = lambda fn: (lambda *args, **kwargs: (print(f"Apelând funcția {fn.__name__}"), fn(*args, **kwargs))[1])
@log_decorator
def suma(a, b):
return a + b
print(suma(3, 5)) # Output: Apelând funcția suma
# 8
Exercițiu:
Creați un decorator cu o funcție lambda pentru a înregistra apelurile unei funcții.
Exemplu: utilizarea funcțiilor lambda în contextul programării funcționale
from functools import reduce
date = [
{"nume": "Ana", "varsta": 27, "salariu": 3500},
{"nume": "Ion", "varsta": 32, "salariu": 4200},
{"nume": "Maria", "varsta": 24, "salariu": 3000},
{"nume": "Dan", "varsta": 29, "salariu": 3800}
]
# Filtrăm angajații cu vârsta sub 30 de ani.
angajati_sub_30 = list(filter(lambda x: x["varsta"] < 30, date))
# Calculăm suma salariilor angajaților sub 30 de ani.
suma_salarii = reduce(lambda acumulator, angajat: acumulator + angajat["salariu"], angajati_sub_30, 0)
# Calculăm media salariilor angajaților sub 30 de ani.
media_salarii = suma_salarii / len(angajati_sub_30)
print(f"Media salariilor pentru angajații sub 30 de ani este: {media_salarii:.2f}") # Output: 3433.33
Exercițiu:
Scrieți un program funcțional care utilizează funcții lambda pentru a procesa o listă de date. Alegeți un set de date și aplicați operațiuni precum filtrare, sortare și agregare.