Lezioni di Python – 6.8 Il modulo Itertools

Lezioni di Python - 6.8 Il modulo itertools

Il modulo itertools

Il modulo itertools è un modulo presente nella libreria standard di Python che contiene molte funzioni che sono molto utili nella programmazione funzionale, in particolar modo nelle iterazioni.

La funzione count() comincia a contare da un determinato valore.

La funzione cycle() effettua una iterazione infinita su di un oggetto iterable

La funzione repeat() ripete un oggetto, sia infinte volte che per un determinato valore di volte.

Vediamo un esempio

from itertools import count
for i in count(4):
    if i > 10:
        break
    print(i) 

eseguendo

>>>
4
5
6
7
8
9
10

Altre Funzioni

Esistono altre funzioni all’interno del modulo che lavorano in maniera simile a map() e filter().

  • takewhile() – prende gli elementi di un oggetto iterabile finchè una funzione predicato rimane True
  • chain() – combina diversi oggetti iterabili in un’unico oggetto iterabile
  • accumulate() – restituisce il numero totale di valori in un oggetto iterabile.

Vediamo un esempio

from itertools import accumulate, takewhile, chain
lista1 = list(accumulate(range(7)))
print(lista1)
lista2 = list(takewhile(lambda x: x<5, lista1))
print(lista2)
print(list(chain(lista1,lista2))) 

eseguendo

>>>
[0, 1, 3, 6, 10, 15, 21]
[0, 1, 3]
[0, 1, 3, 6, 10, 15, 21, 0, 1, 3]

Funzioni combinatoriali

Esistono funzioni di tipo combinatoriale nel modulo itertools come product() e permutation(). Queste funzioni sono molto utili quando si vogliono ottenere tutte le possibili combinazioni degli elementi.

from itertools import permutations, product
lettere = ("A","B","C")prodotto = list(product(lettere,lettere))
combinazioni = list(permutations(lettere))
print(prodotto)
print(combinazioni) 

eseguendo

>>>
[('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'B'), ('B', 'C'), ('C', 'A'), ('C', 'B'), ('C', 'C')]
[('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'), ('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')]

⇐ Vai a Lezione 6.7 – Set

Vai a Lezione 7.1 – Le Classi ⇒

Lascia un commento