
La funzione combinations() di Python
In questa lezione ti spiego come calcolare le combinazioni suando la funzione itertools.combinations() del linguaggio di programmazione Python. E' una funzione appartenente al modulo itertools.
itertools.combinations(iterable, r)
La funzione combinations prende due parametri: l'iterabile e la lunghezza delle combinazioni (rappresentata da un intero). La sintassi è la seguente:
- iterable - l'iterabile i cui elementi vogliamo combinare (come una lista o una stringa).
- r - la lunghezza di ogni combinazione.
La funzione calcola tutte le possibili combinazioni degli elementi all'interno di un iterabile presi a gruppi della lunghezza che hai indicato.
Ogni combinazione restituita è una tupla con gli elementi ordinati nella stessa sequenza in cui appaiono nell'iterabile.
Cosa sono le combinazioni? Le combinazioni in statistica rappresentano i diversi modi in cui un certo numero di oggetti può essere selezionato da un gruppo più grande, dove l'ordine non importa. Ad esempio, se hai tre frutti – una mela, una pera e un'arancia – e vuoi sapere in quanti modi puoi scegliere due frutti, hai tre combinazioni possibili: mela e pera, mela e arancia, e pera e arancia.
Vediamo in dettaglio come funziona e alcuni esempi pratici.
Ricorda che per poter utilizzare la funzione combinations, è necessario prima importare il modulo itertools.
import itertools
oppure la singola funzione combinations() dal modulo ipertools.
from itertools import combinations
Supponi di avere una lista di lettere e vuoi ottenere tutte le possibili combinazioni di 2 lettere dalla lista.
- from itertools import combinations
- lettere = ['a', 'b', 'c']
- combinazioni_di_due = list(combinations(lettere, 2))
- print(combinazioni_di_due)
La funzione combinations() calcola e restituisce le possibili combinazioni.
[('a', 'b'), ('a', 'c'), ('b', 'c')]
Come puoi notare, nella tupla non ci sono combinazioni con elementi ripetuti e non si tiene conto dell'ordine, cioè, ('a', 'b') è considerata la stessa combinazione di ('b', 'a').
A differenza delle permutazioni, nelle combinazioni l'ordine degli elementi non è rilevante. Inoltre, non ci sono elementi ripetuti nella stessa combinazione.
La funzione itertools.combinations è uno strumento potente e facile che puoi usare per generare tutte le possibili combinazioni di un dato set di dati. Ricorda però che, quando il set di elementi è grande e la lunghezza delle combinazioni richieste è significativa, il numero di combinazioni può crescere rapidamente, impegnando una maggiore quantità di memoria e tempo di calcolo. Pertanto, ti consiglio usarla con cautela in questi casi.