Combinazioni in python

di il
6 risposte

Combinazioni in python

Salve, sono nuovo nel forum, attualmente sto iniziando a programmare in python e mi sono imbattuto in un problema(ho cercato già nel sito una cosa simile ma le soluzioni adottate non mi portano da nessuna parte):

ho 2 elementi e dovrei stampare a schermo tutte le loro possibili combinazioni, io ho scritto questo codice(trovato on line):
import itertools

def permutations(iterable, r):
                pool = tuple(iterable)
                n = len(pool)
                for indices in permutations(range(n), r):
                    if sorted(indices) == list(indices):
                        yield tuple(pool[i] for i in indices)
Tuttavia quando lo eseguo mi restituisce questo risultato:
<generator object permutations at 0x0000023420B60938>

come posso risolvere il problema ?

6 Risposte

  • Re: Combinazioni in python

    Ma devi stampare le 'combinazioni' o le 'permutazioni'?

    NON SONO la stessa cosa.

    Comunque cerca meglio: il codice che hai trovato e' una schifezza.

    Per le permutazioni esiste un algo decisamente piu' raffinato ed elegante.
  • Re: Combinazioni in python

    Grazie per la risposta, mi spiego con un esempio:

    ho 2 elementi a, b,

    voglio ottenere tutte le combinazioni possibili con 3 posizioni

    quindi vorrei avere_:

    a a a
    b b b
    a b b
    a a b
    b b a
    b a a

    mi sto approcciando da poco al mondo dell'informatica e faccio confusione
  • Re: Combinazioni in python

    Ho risolto da solo, sostanzialmente mi bastava usare la funzione product.
  • Re: Combinazioni in python

    Suppongo tu abbia risolto così:
    import itertools
    
    mylist = list(itertools.product(['a','b'],repeat=3))
    print(mylist)
  • Re: Combinazioni in python

    Si esatto, con questa funzione ho risolto il problema!
  • Re: Combinazioni in python

    L'unica differenza è che scrivendo semplicemente print(mylist) non stampa a schermo le soluzioni,

    per fare ciò ho scritto cosi
    for i in mylist:
         print(i)
Devi accedere o registrarti per scrivere nel forum
6 risposte