Python mette a disposizione, tramite la libreria itertoolsdei metodi diretti per per ottenere permutazioni e combinazioni di una sequenza.

Combinazioni

Importiamo il package itertools per poter implementare il metodo interessato:

>>> from itertools import combinations

Effettuiamo la chiamata al metodo combinations(iterabile, r) passandogli come parametro una lista e la lunghezza delle combinazioni che vogliamo ottenere:

>>> combinazioni = list(combinations([102, 2, 103, 43], 3))

Come possiamo notare combinations(iterabile, r) restituisce una lista di tuple della lunghezza specificata(in questo caso ogni tupla conterrà 3 valori) contenenti tutte le combinazioni possibili:

>>> combinazioni
[(102, 2, 103), (102, 2, 43), (102, 103, 43), (2, 103, 43)]

Nota: se la lista passata in ingresso è ordinata, le tuple che avremmo in output saranno anch'esse ordinate.

>>> combinazioni = list(combinations('ABCD', 2))
[('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'C'), ('B', 'D'), ('C', 'D')]

Nel package itertools esiste inoltre la funzione combinations_with_replacement(iterable, r) che ci permette di ripetere un valore più volte nella stessa tupla:

>>> from itertools import combinations_with_replacement
>>> combinazioni = list(combinations_with_replacement("ABCD", 2))
>>> combinazioni
[('A', 'A'), ('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'B'), ('B', 'C'), ('B', 'D'), ('C', 'C'), ('C', 'D'), ('D', 'D')]

Conclusione

Bene! Siamo giunti al termine...

Spero di esserti stato utile e se lo sono stato ti invito a condividere l'articolo sui social e a seguirmi su twitter e instagram, alla prossima!


Condividi sui Social