Ich habe eine Folge von Buchstaben und möchte alle möglichen Buchstabenkombinationen finden, indem ich die Buchstaben um einen bestimmten Buchstaben herum abschneide.

C ist hier mein Sonderbuchstabe und X kann alles sein, also mit einer Sequenz:

XCXX

Alle möglichen Kombinationen wären also:

XCXX
XCX
XC
CXX
CX
C

Gibt es dafür eine Python-Funktion oder sollte ich sie von Grund auf neu codieren?

Vielen Dank

3
Anake 8 Okt. 2012 im 20:18

3 Antworten

Beste Antwort

Ich hätte es so von Grund auf neu codiert:

def cuts(s,i): 
   return [ s[a:b] for a in range(i+1) for b in range(i+1,len(s)+1)]

Dabei ist s die Zeichenfolge und i der Index Ihres "Sonderbuchstabens" in s. Beispiel:

>>> cuts('XCXX', 1)
['XC', 'XCX', 'XCXX', 'C', 'CX', 'CXX']
4
phynfo 8 Okt. 2012 im 16:32

Nein, aber Sie könnten es als Einzeiler tun.

data = "XCXX"
cIndex = data.index("C")
permutations = [data[i:j+1] for i in range(cIndex+1) 
        for j in range(cIndex, len(data))]
0
Dunes 8 Okt. 2012 im 16:34

Zählen Sie die Anzahl der Elemente vor und nach Ihrem speziellen Element C. Dann werden Ihre Kombinationen durch diese beiden Zahlen eindeutig definiert, und Sie können einfach das Schneiden von Zeichenfolgen verwenden, um eine bestimmte zu erhalten.

3
Dougal 8 Okt. 2012 im 16:24