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 wollen. Nehmen wir zur Veranschaulichung die Zeichenfolge „Stack“ als Beispiel:
<code class="python">x = 'stack'</code>
Unser Ziel ist es, Permutationen von „Stack“ zu erstellen, indem wir seine Zeichen neu anordnen.
<code class="python">l=['stack','satck','sackt'.......]</code>
Traditionell eins könnten iterative Ansätze zur Lösung dieser Herausforderung in Betracht ziehen, die die zufällige Auswahl und Transposition von Zeichenpaaren beinhalten, um neue Permutationen zu erzeugen. Wir können unsere Aufgabe jedoch vereinfachen, indem wir die vom Modul itertools bereitgestellte Methode permutations() verwenden. Wie aus der Dokumentation hervorgeht:
itertools.permutations(iterable[, r])
Return successive r length permutations of elements in the iterable.
Die Verwendung dieser Methode in unserem Szenario erfordert, dass wir die folgenden Überlegungen einhalten:
Um unsere gewünschten Permutationen zu erhalten, verwenden wir daher den folgenden Ansatz:
<code class="python">from itertools import permutations perms = [''.join(p) for p in permutations('stack')]</code>
Dieser Ansatz führt zu den 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, z. B. eine Menge:
<code class="python">perms = [''.join(p) for p in permutations('stacks')] len(perms) # 720 len(set(perms)) # 360</code>
Das obige ist der detaillierte Inhalt vonWie generiert man in Python mit dem Modul „itertools' alle möglichen Permutationen einer bestimmten Zeichenfolge und wie geht man mit potenziellen Duplikaten um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!