alle möglichen Länge k-Kombinationen einer string in python

Ich würde gerne alle möglichen Kombinationen der Buchstaben in einem string mit der Länge k. Ich weiß es gibt viele Beiträge zu diesem Thema, aber ich habe ein wenig verdrehen, k ist größer als die Länge der Zeichenfolge.

Dies ist, was ich habe, so weit, seine einfach, und es funktioniert, wenn k <= len(string):

 string = 'ABCD'
 permutations = ["".join(x) for x in itertools.permutations(string, k)]

Ergebnisse, wenn k = 4:

 ['ABCD', 'ABDC', 'ACBD', 'ACDB', 'ADBC', 'ADCB', 'BACD', 'BADC', 'BCAD', 'BCDA', 
'BDAC','BDCA', 'CABD', 'CADB', 'CBAD', 'CBDA', 'CDAB', 'CDBA', 'DABC', 'DACB', 
'DBAC', 'DBCA', 'DCAB', 'DCBA']

Diese wie erwartet funktioniert. Ich möchte jedoch alle möglichen Kombinationen dieser vier Buchstaben, mit k > len(string).

Beispiel Antwort, die ich gerne sein würde:

string = 'AB'
k = 4
result = ['AAA,'ABB','AAB', 'ABA','BBB', 'BAA'.......]

Vielen Dank im Voraus.

  • Es gibt 4^15 strings der Länge 15, bestehend aus A, B, C und D. Das sind über eine Milliarde - strings. Natürlich Ihr computer verklemmt sich. (Beachten Sie, dass es gibt eine Billion Permutationen von 15 Elementen, das ist, was Sie gebeten, Ihren computer zu berechnen)
  • Sie sollten ein Beispiel geben von dem, was die Ausgabe, die Sie sehen wollen.
  • rechten, Weg, SO kann eingeklemmt werden bis zu verarbeiten versucht eine multi-GB HTTP POST, anstatt nur die Fragesteller die computer verklemmt sich 😉
  • Ich bin mir relativ sicher, dass so ein POST fehlschlagen würde. Zumindest hoffe ich so. (plötzlicher Drang zu versuchen)
  • Beachten Sie, dass itertools.permutations ist, geben Sie die Anzahl der gut.... Permutationen, Kombinationen nicht. Nachdem, was @nneonneo sagte, wenn Sie erlauben wiederholten Buchstaben m^n möglichen strings der Länge n, mit m Symbolen. Gegeben ein string s der Länge n, gibt es n! (Fakultät) Permutationen von s. Eine permutation ist eine Neuordnung, die verwendet jeder der ursprünglichen Elemente nur einmal.
  • Ok ja, das ist der Grund, warum es verklemmt sich Sinn macht. Sorry ich bin sehr neu in der Programmierung. Eine andere Möglichkeit wäre, um nicht zu speichern und alle Kombinationen. Ich bin versucht, suchen eine sehr große string für die Anzahl der vorkommen jeder Kombination und sehen, welche Kombination tritt am häufigsten auf.
  • Dann bitten. Don ' T fallen in die Falle des X/Y-problem. (Wenn Sie tatsächlich überprüfen Sie jede einzelne Kombination, Ihr Speicher und CPU-Zeit explodieren. Es gibt viel, viel einfachere Wege).
  • Das Beispiel, das Sie Gaben mit 'AB' und k = 4 nicht der gleichen Logik Folgen wie die, die Sie gab mit 'ABCD' und k = 4. Ich finde das irreführend. Ich blieb mit der Auslegung der letzteren zu bauen, meine Antwort.
  • Ihre Beispiele scheinen nicht zu entsprechen. Sie haben 'AAA' im Beispiel am Ende, aber Sie haben nicht 'AAAA' in der Ausgabe vom permutations - code, den Sie sagen, ist richtig.

InformationsquelleAutor Samantha | 2013-10-17
Schreibe einen Kommentar