Permutazioni di una stringa in Python
-
Usa la funzione
itertools.permutations()
per restituire tutte le permutazioni di una stringa in Python - Crea una funzione definita dall’utente per restituire tutte le permutazioni per 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.
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.
LinkedInArticolo correlato - Python String
- Come controllare una stringa è vuota in modo pitonico
- Converti una stringa in nome variabile in Python
- Come rimuovere gli spazi bianchi in una stringa in Python
- Estrai numeri da una stringa in Python
- Come convertire una stringa in datario in Python
- Come convertire una stringa in minuscola in Python 2 e 3