lettura facile

La funzione itertools.product() in Python

La funzione itertools.product() in Python ti permette di calcolare il prodotto cartesiano di input multipli.

product(*iterables, repeat=1)

Questa funzione ha due argomenti:

  • *iterables sono gli iterabili (come liste o tuple) per cui vuoi trovare il prodotto cartesiano.
  • repeat è un parametro opzionale che specifica quante volte l'iterabile deve essere ripetuto nel prodotto cartesiano. Il valore predefinito è 1, il che significa che non c'è ripetizione.

La funzione product() genera tutte le possibili combinazioni di elementi presi da due o più iterabili. Puoi usarla anche per calcolare il prodotto cartesiano.

Ricorda che product() è una funzione del modulo itertools di Python. Quindi, per utilizzarla devi prima importarla nella sessione.

Ecco un esempio pratico.

Prima di tutto, devi importare la funzione product() dal modulo ipertoosl e caricarla in memoria

from itertools import product

Ora definisci gli iterabili dai quali vuoi generare le combinazioni.

Possono essere liste, tuple o qualsiasi oggetto iterabile.

iterabile1 = [1, 2, 3]
iterabile2 = ['A', 'B']

A questo punto usa product() passandogli gli iterabili come argomenti per ottenere un iteratore che produce le combinazioni.

combinazioni = product(iterabile1, iterabile2)

La funzione calcola le combinazioni e le assegna alla variabile.

Ora puoi iterare sulle combinazioni per vederle

  1. for combinazione in combinazioni:
  2. print(combinazione)

Questo stampa sullo schermo tutte le combinazioni senza ripetizione.

(1, 'A')
(1, 'B')
(2, 'A')
(2, 'B')
(3, 'A')
(3, 'B')

La funzione product() restituisce un iteratore delle combinazioni.

In alternativa, puoi convertire l'iteratore in una lista usando la funzione list()

print(list(combinazioni))

[(1, 'A'), (1, 'B'), (2, 'A'), (2, 'B'), (3, 'A'), (3, 'B')]

Le combinazioni con ripetizione

Se vuoi ottenere delle combinazioni con ripetizione, puoi specificare quante volte vuoi ripetere gli elementi nel parametro repeat della funzione product().

Ad esempio, digita questo comando indicando repeat=2.

combinazioni = product(iterabile1, repeat=2)

Questo genera combinazioni con ripetizioni dell'oggetto iterabile1.

  1. for combinazione in combinazioni:
  2. print(combinazione)

Ecco il risultato finale

(1, 1)
(1, 2)
(1, 3)
(2, 1)
(2, 2)
(2, 3)
(3, 1)
(3, 2)
(3, 3)

Ora modifica lo script in questo modo, indicando repeat=3

  1. from itertools import product
  2. iterabile1 = [1, 2, 3]
  3. iterabile2 = ['A', 'B']
  4. combinazioni = product(iterabile1, repeat=3)
  5. for combinazione in combinazioni:
  6. print(combinazione)

In questo caso l'output sono le combinazioni degli elementi dell'iterabile a gruppi di 3

(1, 1, 1)
(1, 1, 2)
(1, 1, 3)
(1, 2, 1)
(1, 2, 2)
(1, 2, 3)
(1, 3, 1)
(1, 3, 2)
(1, 3, 3)
(2, 1, 1)
(2, 1, 2)
(2, 1, 3)
(2, 2, 1)
(2, 2, 2)
(2, 2, 3)
(2, 3, 1)
(2, 3, 2)
(2, 3, 3)
(3, 1, 1)
(3, 1, 2)
(3, 1, 3)
(3, 2, 1)
(3, 2, 2)
(3, 2, 3)
(3, 3, 1)
(3, 3, 2)
(3, 3, 3)

In questo modo, puoi usare questa funzione per ottenere il prodotto cartesiano o le combinazioni di uno o più iterabili.

Ricorda che product() genera tutte le possibili combinazioni, il che può diventare molto costoso in termini di memoria se gli iterabili sono grandi o se usi molte ripetizioni. Usa questo strumento con saggezza.

Questi sono solo alcuni esempi di base per spiegarti come funzione. Le sue potenzialità sono però enormi. Puoi combinare product() con altre funzioni di itertools o altri strumenti di Python per creare soluzioni a problemi complessi.

 




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




FacebookTwitterLinkedinLinkedin