如何生成几个字母的所有可能排列的列表?

时间:2014-01-29 18:19:36

标签: python permutation alphabetical

所以我正在创建一个单词生成器,它接收几个输入的字母,将它们放在所有可能的位置,并将它们与文档匹配以查找单词。如果我接近这个错误请告诉我!如果不是我怎么能这样做? 感谢

4 个答案:

答案 0 :(得分:8)

要生成给定字母列表的所有排列,请使用itertools模块。

import itertools 
for word in itertools.permutations( list_of_letters ):
   print ''.join(word)

答案 1 :(得分:2)

反向运行它可能会更快:索引文档,并为每个单词查看它是否是字母列表的子集。

答案 2 :(得分:2)

您可以编写自己的函数(:

def permutation(head, tail=''):
    if len(head) == 0: 
        print tail
    else:
        for i in range(len(head)):
            permutation(head[0:i] + head[i + 1:], tail + head[i])

答案 3 :(得分:0)

def allpermutationsOfString(words):
  if len(words) == 1:
    return [words]
  result = []
  for index, letter in enumerate(words):
    wordWithoutLetter = words[:index] + words[index+1:]
    result = result + [letter + word for word in allpermutationsOfString(wordWithoutLetter)]
  return result

print allpermutationsOfString("watup") #will print all permutations of watup

这是实现算法的另一种方法。