Alle möglichen Permutationen einer gegebenen Zeichenfolge in Python finden
Die Aufgabe, alle möglichen Permutationen einer gegebenen Eingabezeichenfolge zu generieren, hat eine einfache Lösung in Python. Um mit dieser Aufgabe zu beginnen, betrachten wir zunächst die Eingabezeichenfolge, die wir neu ordnen möchten. Nehmen wir zur Veranschaulichung die Zeichenfolge „stack“ als Beispiel:
x = 'stack'
Unser Ziel ist es, Permutationen von „stack“ zu erstellen, indem wir seine Zeichen neu anordnen.
l=['stack','satck','sackt'.......]
Traditionell könnte man zur Lösung dieser Herausforderung iterative Ansätze in Betracht ziehen, die Folgendes einbeziehen zufällige Auswahl und Transposition von Zeichenpaaren, um neue Permutationen zu erzeugen. Wir können unsere Aufgabe jedoch vereinfachen, indem wir die vom Modul itertools bereitgestellte Methode permutations() verwenden. Wie die Dokumentation andeutet:
itertools.permutations(iterable[, r])
Return successive r length permutations of elements in the iterable.
Verwendung dieser Methode in unserem Szenario erfordert, dass wir uns an die folgenden Überlegungen halten:
Um unsere gewünschten Permutationen zu erhalten, verwenden wir daher den folgenden Ansatz:
from itertools import permutations
perms = [''.join(p) for p in permutations('stack')]
Dieser Ansatz ergibt die folgenden Permutationen:
['stack', 'stakc', 'stcak', 'stcka', 'stkac', 'stkca', 'satck', 'satkc', 'sactk', 'sackt', 'saktc', 'sakct', 'sctak', 'sctka', 'scatk', 'scakt', 'sckta', 'sckat', 'sktac', 'sktca', 'skatc', 'skact', 'skcta', 'skcat', 'tsack', 'tsakc', 'tscak', 'tscka', 'tskac', 'tskca', 'tasck', 'taskc', 'tacsk', 'tacks', 'taksc', 'takcs', 'tcsak', 'tcska', 'tcask', 'tcaks', 'tcksa', 'tckas', 'tksac', 'tksca', 'tkasc', 'tkacs', 'tkcsa', 'tkcas', 'astck', 'astkc', 'asctk', 'asckt', 'asktc', 'askct', 'atsck', 'atskc', 'atcsk', 'atcks', 'atksc', 'atkcs', 'acstk', 'acskt', 'actsk', 'actks', 'ackst', 'ackts', 'akstc', 'aksct', 'aktsc', 'aktcs', 'akcst', 'akcts', 'cstak', 'cstka', 'csatk', 'csakt', 'cskta', 'cskat', 'ctsak', 'ctska', 'ctask', 'ctaks', 'ctksa', 'ctkas', 'castk', 'caskt', 'catsk', 'catks', 'cakst', 'cakts', 'cksta', 'cksat', 'cktsa', 'cktas', 'ckast', 'ckats', 'kstac', 'kstca', 'ksatc', 'ksact', 'kscta', 'kscat', 'ktsac', 'ktsca', 'ktasc', 'ktacs', 'ktcsa', 'ktcas', 'kastc', 'kasct', 'katsc', 'katcs', 'kacst', 'kacts', 'kcsta', 'kcsat', 'kctsa', 'kctas', 'kcast', 'kcats']
Wenn wir in unseren Permutationen auf Duplikate stoßen, können wir damit umgehen, indem wir unsere Daten in ein Format umstrukturieren, das Duplikate verhindert, wie zum Beispiel eine Menge:
perms = [''.join(p) for p in permutations('stacks')]
len(perms) # 720
len(set(perms)) # 360
len(perms) # 720
len(set(perms)) # 360 Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3