Permutationen einer Zeichenkette in Python

Manav Narula 30 Januar 2023
  1. Verwenden Sie die Funktion itertools.permutations(), um alle Permutationen einer Zeichenkette in Python zurückzugeben
  2. Erstellen Sie eine benutzerdefinierte Funktion, um alle Permutationen für einen String in Python zurückzugeben
Permutationen einer Zeichenkette in Python

Unter Permutation verstehen wir die Gesamtzahl der möglichen Umlagerungen für eine gegebene Anzahl von Elementen auf einzigartige Weise, ohne die Umordnungsreihenfolge zu berücksichtigen.

Eine Zeichenkette kann man sich bekanntlich als eine Ansammlung einzelner Zeichen vorstellen.

In diesem Artikel werden wir versuchen, alle möglichen Permutationen für einen bestimmten String zu finden.

Verwenden Sie die Funktion itertools.permutations(), um alle Permutationen einer Zeichenkette in Python zurückzugeben

Das Modul itertools wird verwendet, um verschiedene iterierbare Objekte zu erstellen und mit ihnen zu arbeiten. Die Funktion permutations() dieses Moduls kann alle möglichen Anordnungen für einen bestimmten Satz von Werten zurückgeben.
Es gibt ein Objekt vom Typ itertools zurück, das ein Tupel enthält, das die mögliche Anordnung der Elemente enthält. Wir können eine Liste verwenden, um die Elemente dieses Objekts anzuzeigen. Wir können diese Funktion auch mit einem String verwenden.

Beispielsweise,

from itertools import permutations

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

Ausgabe:

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

Beachten Sie die Tupel, die in der Ausgabe erstellt werden und die Anordnung der Zeichen enthalten. Wir können dies mit der Funktion join() und der Methode zum List Comprehensions in eine Liste von Strings ändern.

Siehe den folgenden Code.

from itertools import permutations

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

Ausgabe:

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

Wir kombinieren die Tupelelemente mit der Funktion join() und verwenden diese für jedes Tupel, indem wir die Liste durchlaufen.

Erstellen Sie eine benutzerdefinierte Funktion, um alle Permutationen für einen String in Python zurückzugeben

Wir können eine einfache Funktion erstellen, um alle Permutationen einer Zeichenkette zu finden. Wir erstellen eine rekursive Funktion. Bei dieser Methode tauschen wir die String-Elemente nur einmal aus und rufen die Funktion mit dem neuen Arrangement erneut auf. Wir zeigen die endgültigen Arrangements.

Wir implementieren die obige Logik im folgenden Code.

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))

Ausgabe:

day
dya
ady
ayd
yad
yda
None

Wie Sie sehen, sind die Start- und Endpositionen angegeben, an denen wir die Neuanordnungen durchführen möchten. Der String wird auch als Liste von Zeichen übergeben. Um alle möglichen Permutationen zu finden, setzen wir den Anfang auf 0 und das Ende als Länge des Strings.

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

Verwandter Artikel - Python String