我真的是编程新手。我试图编写一个包含一个单词,更改其字符顺序并检查列表中是否包含新表格的代码。例如,单词“垃圾邮件”被更改为pams
,amsp
和mspa
。
代码是这样的:
# -*- 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项列表。
答案 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]))