import itertools;
s = {1,2,3}
for p in itertools.permutations(s):
print(p)
import itertools;
s = {1,2,3}
for p in itertools.permutations(s):
print(p)
risultato:
(1, 2, 3) (1, 3, 2) (2, 1, 3) (2, 3, 1) (3, 1, 2) (3, 2, 1)
tutte le sequenze di tre elementi di s
sono sequenze, non insiemi
(1,2,3) è diversa da (1,3,2)
anche se contiene gli stessi numeri
itertools.permutations(s) sono tutte le sequenze
che contengono tutti gli elementi di s
senza ripetizioni
lunghezza: secondo argomento, opzionale
itertools.permutations(s, 2) sono tutte le sequenze
che contengono due elementi di s qualsiasi
senza ripetizioni
for p in itertools.permutations(s, 2): print(p)
risultato:
(1, 2) (1, 3) (2, 1) (2, 3) (3, 1) (3, 2)
tutte le sequenze di due elementi di s
itertools.combinations(s, 2)
tutti i sottoinsiemi di 2 elementi di s
insiemi invece che liste
import itertools;
s = {1,2,3}
for p in itertools.combinations(s, 2):
print(p)
import itertools;
s = {1,2,3}
for p in itertools.combinations(s, 2):
print(p)
risultato:
(1, 2) (1, 3) (2, 3)
sono insiemi, non sequenze
(1,2) e (2,1) sono lo stesso insieme
viene stampato solo uno dei due, l'altro sarebbe uguale
itertools.permutations(s) itertools.permutations(s, 2) itertools.combinations(s, 2)
il numero di elementi è opzionale per le permutazioni
obbligatorio per le combinazioni
opzionale = grandezza di s, se non c'è
inutile per le combinazioni
l'unico sottoinsieme di s
grande quanto s
è s stesso
scrivere un programma che stampa tutte le combinazioni
di grandezza qualsiasi
di elementi di s={1,2,3}
for l in range(len(s)): for p in itertools.combinations(s, l): print(p)
stessa cosa per le permutazioni