我遇到这个函数有点问题。查找9个字符的所有排列
def check_possible(input):
possibilities = []
solutions = []
dict = dictionary(input)
dict.get_dict()
words = dict.get_all_words()
for L in range(0, len(input)+1):
for subset in itertools.permutations(input, L):
possibilities.append(subset)
for possibility in possibilities:
poss = "".join(possibility)
if len(poss) > 3 and len(poss) < 9:
for item in words:
for i in item:
if poss in i:
solutions.append(poss)
return solutions
基本上,它需要与9个字符作为参数的列表,并产生3首和9个字符之间与在字典中的所有可用的排列的列表(使用26个词典文件,1每个字母,创建列表中给出的每个字母的子列表,然后检查由上述函数生成的每个排列)。
所以这个函数返回:
>>input = ['a', 'b', 'd', 'c', 'e', 'b', 'd', 'e', 'f']
<<['dace', ..., 'face', 'decaf', 'bedad', 'ceded', 'faded', 'faced', 'beaded', 'deface', 'decade', 'defaced']
虽然这个工程,并返回正确的价值观,它需要10之间 - 15分钟才能完成。我想知道是否有办法达到相同的结果,但时间较短(最好在一分钟之内)。
当不在函数内部时,返回值是什么? –
我的歉意,它应该是在一个函数。 – Notgivinit
也许[itertools.permutations()](https://docs.python.org/2/library/itertools.html#itertools.permutations)可以为您完成这项工作。干! –