这是我的工作代码,我正在尝试寻找方法使其更快地找到有效单词,我正在考虑可能为每个单词制作单独的字典列表,你们怎么看?
import random
import itertools
file_name='words.txt'
def load_words():
try:
f=open(file_name,'r')
str1=f.read()
f.close()
except:
print('Problem opening the file',file_name)
list1=[]
list1=str1.split()
return(list1)
def is_valid(str1,list1):
valid=False
if str1 in list1:
valid=True
return valid
def generate(words,letters):
answers=[]
for length in range(2,len(letters)+1):
for x in itertools.permutations(letters,length):
word=''
for let in x:
word+=let
if is_valid(word.upper(),words):
answers.append(word)
print(word)
print(answers)
def main():
words=load_words()
letters = input('Enter your letters')
answers = generate(words,letters)
main()
最佳答案
首先,剖析代码。这将告诉您缓慢的部分在哪里。
其次,您可以考虑将单词列表转换为一个集合,它应该有一个更快的“in”运算符来检查单词是否存在。
第三,考虑简化代码,去除不必要的语句,eg.
def is_valid(str1,list1):
return str1 in list1
关于python - 需要帮助使排列更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8331750/