3

我有一个字母序列,并希望通过切断某个字母周围的字母来找到所有可能的字母组合。

C 是我这里的特殊字母,X 可以是任何东西,所以有一个序列:

XCXX

所以所有可能的组合都是:

XCXX
XCX
XC
CXX
CX
C

是否有一个 python 函数,或者我应该从头开始编写它?

谢谢

4

3 回答 3

4

我会像这样从头开始编写代码:

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

哪里s是字符串,i是你的“特殊字母”的索引s。例子:

>>> cuts('XCXX', 1)
['XC', 'XCX', 'XCXX', 'C', 'CX', 'CXX']
于 2012-10-08T16:32:24.270 回答
3

尝试计算您的特殊元素之前和之后的元素数量C。然后你的组合由这两个数字唯一定义,你可以使用字符串切片来获得一个特定的数字。

于 2012-10-08T16:24:36.763 回答
0

不,但是您可以将其作为单线。

data = "XCXX"
cIndex = data.index("C")
permutations = [data[i:j+1] for i in range(cIndex+1) 
        for j in range(cIndex, len(data))]
于 2012-10-08T16:34:29.737 回答