我很抱歉已经有很多关于这个问题的文章。但是,我很难在自己的实施中看到自己的错误。所以我试图编写一个函数,它接受一个字符串并以列表的形式返回所有可能的排列。在Python中递归地实现排列
理论上应该是这样的:
allPermutations( “ABC ... Z”)= [A + allPermutations(B,C,... Z),B + allPermutations(A,C .. .z)...]
我在当前的实现中,当在字符串“Hello”上测试时,会输出一堆重复的排列。任何人都可以帮我看看我哪里出错了。感谢您的协助!
这里是代码:
def allPermutations(strng):
if len(strng) ==1:
return [strng]
perm_list = []
for i in strng:
smallerStr = strng.replace(i,"",1)
z = allPermutations(smallerStr)
for t in z:
perm_list.append(i+t)
return perm_list
我不确定你是否只是想练习,但如果你不是,itertools有一个方便的排列功能。例如, – James
,“你好”有2个“l”。因此,它会有双重排列。 – Drakosha