Permutazioni di una stringa in Python

Manav Narula 30 gennaio 2023
  1. Usa la funzione itertools.permutations() per restituire tutte le permutazioni di una stringa in Python
  2. Crea una funzione definita dall’utente per restituire tutte le permutazioni per una stringa in Python
Permutazioni di una stringa in Python

Per permutazione si intende il numero totale di riarrangiamenti possibili per un dato numero di elementi in modo univoco senza considerare l’ordine di riarrangiamento.

Una stringa, come sappiamo, può essere pensata come una raccolta di singoli caratteri.

In questo articolo cercheremo di trovare tutte le possibili permutazioni per una data stringa.

Usa la funzione itertools.permutations() per restituire tutte le permutazioni di una stringa in Python

Il modulo itertools viene utilizzato per creare e lavorare con diversi oggetti iterabili. La funzione permutations() di questo modulo può restituire tutte le possibili disposizioni per un dato insieme di valori.
Restituisce un oggetto di tipo itertools che contiene una tupla contenente la possibile disposizione degli elementi. Possiamo usare un elenco per visualizzare gli elementi di questo oggetto. Possiamo usare questa funzione anche con una stringa.

Per esempio,

from itertools import permutations

lst = list(permutations("day"))
print(lst)

Produzione:

[('d', 'a', 'y'), ('d', 'y', 'a'), ('a', 'd', 'y'), ('a', 'y', 'd'), ('y', 'd', 'a'), ('y', 'a', 'd')]

Notare le tuple create nell’output che contengono la disposizione dei caratteri. Possiamo cambiarlo in un elenco di stringhe usando la funzione join() e il metodo di comprensione della lista.

Vedere il seguente codice.

from itertools import permutations

lst = ["".join(p) for p in permutations("day")]
print(lst)

Produzione:

['day', 'dya', 'ady', 'ayd', 'yda', 'yad']

Combiniamo gli elementi della tupla usando la funzione join() e la usiamo per ogni tupla scorrendo l’elenco.

Crea una funzione definita dall’utente per restituire tutte le permutazioni per una stringa in Python

Possiamo creare una funzione semplice per trovare tutte le permutazioni di una stringa. Creeremo una funzione ricorsiva. In questo metodo, scambieremo solo gli elementi stringa una volta e chiameremo nuovamente la funzione con la nuova disposizione. Mostriamo le disposizioni finali.

Implementiamo la logica di cui sopra nel codice seguente.

def string_permutations(s, i, n):
    if i == n:
        print("".join(s))
    else:
        for j in range(i, n):
            s[i], s[j] = s[j], s[i]
            string_permutations(s, i + 1, n)
            s[i], s[j] = s[j], s[i]


a = "day"
x = len(a)
s = list(a)
print(permute(s, 0, x))

Produzione:

day
dya
ady
ayd
yad
yda
None

Come puoi vedere, le posizioni di inizio e fine sono specificate dove desideriamo ottenere i riarrangiamenti. La stringa viene anche passata come elenco di caratteri. Per trovare tutte le possibili permutazioni, impostiamo l’inizio a 0 e la fine come lunghezza della stringa.

Autore: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Articolo correlato - Python String