如何编写大量嵌套'for'循环(递归)

kal*_*lin 2 python loops for-loop

word = "word"

# Splitting word into its characters
newword = []
for char in word:
    newword.append(char)

print newword


#getting all permutations
test= []
for i in newword:
    for j in newword:
        if i != j:
            for k in newword:
                if j != k and i!= k:
                    for l in newword:
                        if i != l and j != l and k != l:
                            test.append(i+j+k+l)

print test 
print type(test)
print len(test)
Run Code Online (Sandbox Code Playgroud)

这4个嵌套循环很适合"单词",因为它中只有4个字母.如果我想要与任何给定单词中的字母一样多的'for'循环,我该怎么做?有什么好玩的吗?

ins*_*get 8

In [10]: import itertools

In [11]: word = "word"

In [12]: test = [''.join(perm) for perm in itertools.permutations(word)]

In [13]: test
Out[13]: 
['word',
 'wodr',
 'wrod',
 'wrdo',
 'wdor',
 'wdro',
 'owrd',
 'owdr',
 'orwd',
 'ordw',
 'odwr',
 'odrw',
 'rwod',
 'rwdo',
 'rowd',
 'rodw',
 'rdwo',
 'rdow',
 'dwor',
 'dwro',
 'dowr',
 'dorw',
 'drwo',
 'drow']
Run Code Online (Sandbox Code Playgroud)

  • @IanAuld:我怀疑这是家庭作业,OP不能使用内置插件,因为它们是"免费乘车".要么是,要么OP试图学习一些图遍历算法 (2认同)