lettura facile

Le combinazioni con ripetizione in Python

La funzione combinations_with_replacement() di Python è una funzione del modulo itertools in Python che ti permette di per creare tutte le possibili combinazioni con ripetizione di lunghezza specificata da un iterabile (come una lista).

combinations_with_replacement(iterable, r)

La funzione ha due parametri:

  • iterable: È l'oggetto iterabile (come una lista, stringa, ecc.) dal quale verranno prese le combinazioni.
  • r: È la lunghezza di ogni combinazione. Deve essere un numero intero non negativo.

Restituisce ogni combinazione possibile di lunghezza r degli elementi dell'iterabile, inclusi i duplicati.

Questa funzione ammette le ripetizioni degli elementi nelle combinazioni. Ad esempio, se l'iterabile contiene le lettere [A,B,C], le combinazioni con ripetizione a gruppi di due ammettono anche gli elementi duplicati [A,A] , [B,B] e [C,C] oltre a quelle con gli elementi distinti [A,B], [A,C], [B,C]. Se hai bisogno di ottenere le combinazioni senza ripetizione, usa la funzione combinations() del modulo itertools. In questo caso i duplicati sono eliminati.

Essendo una funzione di un modulo esterno, per usare combinations_with_replacement(), devi prima importarla dal modulo itertools.

from itertools import combinations_with_replacement

Ecco un esempio pratico.

Supponi di avere una lista elementi = [A, B, C] e di voler trovare tutte le combinazioni con ripetizioni di lunghezza 2.

  1. from itertools import combinations_with_replacement
  2. elementi = ['A', 'B', 'C']
  3. combinazioni = list(combinations_with_replacement(elementi, 2))
  4. print(combinazioni)

Questo script produce in output una lista con tutte le possibili combinazioni prese a gruppi di due.

Nelle combinazioni appaiono anche gli stessi elementi ripetuti ('A','A'), ('B','B') e ('C','C').

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

Ricorda che nelle combinazioni l'ordine degli elementi nelle combinazioni non è rilevante.

Ad esempio, la tupla ('A', 'B') è considerata la stessa di ('B', 'A'). Per questa ragione nel risultato c'è solo ('A','B')

Attenzione ai grandi set di dati. Il numero delle combinazioni cresce rapidamente e impiega una grande quantità di memoria del computer e di tempo per eseguire lo script, influenzando l'efficienza. In questi casi usa la funzione con cautela.

Questa funzione del modulo itertools è molto utile, perché ti permette di sviluppare delle applicazioni in statistica e di risolvere problemi che richiedono il calcolo di combinazioni con ripetizione, senza dover sviluppare molte righe di codice.

 




Se qualcosa non ti è chiaro, scrivi la tua domanda nei commenti.




FacebookTwitterLinkedinLinkedin