Conținut curs
Python Avansat
Despre lecție
  1. Introducere în programarea funcțională și biblioteca itertools

    • Ce este programarea funcțională și de ce este importantă
    • Prezentarea bibliotecii itertools și scopul său
    • Importarea bibliotecii itertools și examinarea funcțiilor disponibile
  2. Funcții de combinare din itertools

    • itertools.product(): produsul cartezian al input-urilor
    • itertools.permutations(): permutări ale unui set de elemente
    • itertools.combinations(): combinații de elemente luate câte n
    • itertools.combinations_with_replacement(): combinații cu înlocuire
    • Exemple și exerciții pentru fiecare funcție
  3. Funcții de iterare din itertools

    • itertools.cycle(): ciclarea prin elementele unui iterator
    • itertools.repeat(): repetarea unui element de un număr specificat de ori
    • itertools.count(): generarea unui sir infinit de numere
    • itertools.chain(): concatenarea mai multor iterabile
    • Exemple și exerciții pentru fiecare funcție
  4. Funcții de filtrare din itertools

    • itertools.compress(): filtrarea elementelor în funcție de un selector
    • itertools.filterfalse(): filtrarea elementelor care nu îndeplinesc o anumită condiție
    • itertools.takewhile(): extragerea elementelor până când o condiție este îndeplinită
    • itertools.dropwhile(): eliminarea elementelor până când o condiție este îndeplinită
    • Exemple și exerciții pentru fiecare funcție
  5. Funcții de transformare din itertools

    • itertools.starmap(): aplicarea unei funcții cu mai mulți parametri la input
    • itertools.accumulate(): aplicarea unei funcții binare în mod cumulativ la input
    • Exemple și exerciții pentru fiecare funcție
  6. Funcții de grupare din itertools

    • itertools.groupby(): gruparea elementelor consecutive care îndeplinesc o anumită condiție
    • Exemple și exerciții pentru această funcție

Exemple și exerciții pentru fiecare subpunct:

Exemplu: itertools.product()

python
import itertools

produs_cartezian = list(itertools.product("AB", repeat=2))
print(produs_cartezian)  # Output: [('A', 'A'), ('A', 'B'), ('B', 'A'), ('B', 'B')]

Exercițiu:

Generați produsul cartezian al unui set de numere și a unui set de litere.

Exemplu: itertools.permutations()

python
import itertools

permutari = list(itertools.permutations("ABC", 2))
print(permutari)  # Output: [('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]

Exercițiu:

Generați toate permutările posibile ale cuvântului „MATE”.

Exemplu: itertools.cycle()

python
import itertools

ciclu = itertools.cycle("ABC")
for i in range(10):
    print(next(ciclu), end=" ")  # Output: A B C A B C A B C A

Exercițiu:

Utilizați itertools.cycle() pentru a genera un sir repetitiv de culori.

Exemplu: itertools.compress()

python
import itertools

selector = [True, False, True, False, True]
date = [1, 2, 3, 4, 5]
rezultat = list(itertools.compress(date, selector))
print(rezultat)  # Output: [1, 3, 5]

Exercițiu:

Folosiți itertools.compress() pentru a extrage numerele impare dintr-o listă de numere folosind un selector.

Exemplu: itertools.starmap()

python
import itertools

lista_perechi = [(1, 2), (3, 4), (5, 6)]
suma_perechi = list(itertools.starmap(lambda x, y: x + y, lista_perechi))
print(suma_perechi)  # Output: [3, 7, 11]

Exercițiu:

Folosiți itertools.starmap() pentru a calcula produsul elementelor a două liste de numere.

Exemplu: itertools.groupby()

python
import itertools

date = [("animal", "pisica"), ("animal", "caine"), ("planta", "rosie"), ("animal", "elefant"), ("planta", "ghiocel")]

# Sortăm elementele în funcție de cheia de grupare
date.sort(key=lambda x: x[0])

for cheie, grup in itertools.groupby(date, lambda x: x[0]):
    print(f"{cheie}: {list(grup)}")

Output:

scheme
animal: [('animal', 'pisica'), ('animal', 'caine'), ('animal', 'elefant')]
planta: [('planta', 'rosie'), ('planta', 'ghiocel')]

Exercițiu:

Folosiți itertools.groupby() pentru a grupa o listă de numere în funcție de paritate.

Rezumat:

În această lecție, am învățat despre programarea funcțională și biblioteca itertools. Am explorat diferitele funcții pe care le oferă itertools, cum ar fi funcțiile de combinare, iterare, filtrare, transformare și grupare. Am aplicat aceste funcții în exemple și am propus exerciții suplimentare pentru a consolida cunoștințele.