Leggi su questo http://docs.python.org/2/library/itertools.html#itertools.product, si spiega tutto.
itertools
è un pacchetto che ha un sacco di funzionalità utili per iterare su raccolte. Una funzione utile è la funzione product
che crea un generatore che itererà sul prodotto cartesiano di un numero qualsiasi di raccolte iterabili che gli si assegnano.
Il risultato di itertools.product
non è un elenco, è un generatore. Un generatore python è simile a una coroutine in altre lingue. Ciò significa che calcolerà le tue combinazioni in base alle necessità. Se calcoli il prodotto di tre iterabili ciascuno con dimensione 100, ma utilizzi solo i primi 10 o così, lo itertools.product
calcolerà solo 10 combinazioni invece di calcolare tutte le combinazioni 100^3.
Se si desidera effettivamente un oggetto elenco invece di un generatore (forse si desidera calcolare fette o qualcosa) chiamare la funzione list
e passare l'oggetto generatore come argomento.
Il codice seguente produce tutte le combinazioni e stampa i risultati.
Codice:
import itertools
uk_rock_stars=[1,2,3,4,5,6,7,8,9]
uk_pop_stars=[10,11,12,13,1,4,6,22,81]
us_stars=[22,34,44,7,33,99,22,77,99]
for combination in itertools.product(uk_rock_stars, uk_pop_stars, us_stars):
print combination
Uscite:
(1, 10, 22)
(1, 10, 34)
(1, 10, 44)
(1, 10, 7)
(1, 10, 33)
(1, 10, 99)
(1, 10, 22)
(1, 10, 77)
(1, 10, 99)
(1, 11, 22)
(1, 11, 34)
(1, 11, 44)
(1, 11, 7)
(1, 11, 33)
(1, 11, 99)
(1, 11, 22)
(1, 11, 77)
(1, 11, 99)
...
etc.
itertools e simili: http://docs.python.org/2/library/itertools.html?highlight= itertools # itertools.product – squiguy