python中的wordfinder程序

时间:2018-07-04 23:23:50

标签: python

我真的是编程新手。我试图编写一个包含一个单词,更改其字符顺序并检查列表中是否包含新表格的代码。例如,单词“垃圾邮件”被更改为pamsamspmspa。 代码是这样的:

# -*- coding: utf-8 -*-
mylist = open("D:/python/wordfinder/wordlist.txt").read().splitlines()
for item in mylist:
    x = []
    for i in range((len(item)-1)):
        x.append(i) 
        x[i] = item[i+1:] + item[i-i:i+1:]
        if x[i] in mylist: 
            print(x[i], file = open("output.txt", "a"))

在我的10个单词的样本列表中效果很好。但是,我的实际列表中有超过一百万个单词。我一个小时前运行了脚本,我应该停止它并更改代码吗?什么是我的用例更好的方法?

很抱歉,如果重复。

编辑:花了37个小时来搜索1,337,898项列表并输出10,882项列表。

1 个答案:

答案 0 :(得分:0)

您的代码要花很多时间,因为它要经过很多循环,而且每次通过循环时它都会打开一个文件。让我们尝试在此处简化代码。

word_list是您要传递给程序的单词列表,test_list是您要针对新形成的单词进行测试的列表。

以下代码将在word_list中打印具有新格式的test_list中的每个单词,并打印每个单词。

def word_mix(word):
    return [word[i:]+word[:i] for i in range(1,len(word))]
my_list = [set(word_mix(i)).intersection(test_list) for i in word_list]
for i in range(0,len(word_list)):
    if bool(my_list(i)):
        print(word_list[i]+': '+','.join(my_list[i]))