我试图创建一个代码来显示一个字符串的所有可能的排列,而不使用itertools,所以我想到了一个基本的想法,我如何使用这些难看的嵌套for循环来实现这一点,但是现在我想将它转换为任何长度为“n”的字符串的函数,我对递归有点陌生,所以我需要一些帮助来解决这个问题。

wrdinp=input("Enter a word: ")
d=[]
#Works for string with length 4
for a in wrdinp:
    for b in wrdinp:
        if b!=a:
            for c in wrdinp:
                if c!=a and c!=b:
                    for d in wrdinp:
                        if d!=a and d!=b and d!=c:
                            d.append(a+b+c+d)
print("Permutations:",d)

我需要一个函数,它接受任意长度的字符串,并返回一个包含字符串的各种排列的列表。

最佳答案

这是一种递归方法:

def permutations(wrdinp):
    if len(wrdinp) <= 1:
       return [wrdinp]
    else:
       d = []
       for e in permutations(wrdinp[:-1]):
           for i in range(len(e)+1):
               d.append(e[:i] + wrdinp[-1] + e[i:])
       return d
wrdinp=input("Enter a word: ")
result = permutations(wrdinp)
print(result)

希望有帮助:)

10-04 18:54