python - 需要帮助使排列更快

标签 python permutation

这是我的工作代码,我正在尝试寻找方法使其更快地找到有效单词,我正在考虑可能为每个单词制作单独的字典列表,你们怎么看?

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/

相关文章:

python - BeautifulSoup 测试对象类型

python - 类型错误 : 'function' object has no attribute '__getitem__' when wrapping some already working pygame code into a function

python - 这是从 df 获取一堆索引排列的最佳方法

java - 允许重复的递归字符串排列

c++ - 创建随机迭代器(排列)

python - python中的排列太多

python - 使用位码减少/过滤冗余样本数据的优雅方法

python - Lxml html xpath 上下文

python - Python tqdm 的输出说明。

java - 有限重复置换算法