HOWTO · Python
Permutationen einer Zeichenkette in Python
Dieses Tutorial zeigt, wie Sie alle möglichen Permutationen einer Zeichenkette in Python finden
Auf dieser Seite
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.