比较两个列表(python)
我需要比较一个程序中的两个列表,看看是否有匹配的字符串。其中一个是我已经导入的txt文档。我就是这么做的比较两个列表(python),python,list,Python,List,我需要比较一个程序中的两个列表,看看是否有匹配的字符串。其中一个是我已经导入的txt文档。我就是这么做的 def compareLists(self, listA, listB): sameWords = list() for a in xrange(0,len(listA)): for b in xrange(0,len(listB)): if listA[a] == listB[b]: same
def compareLists(self, listA, listB):
sameWords = list()
for a in xrange(0,len(listA)):
for b in xrange(0,len(listB)):
if listA[a] == listB[b]:
sameWords.append(listA[a])
pass
pass
pass
return sameWords
但是如果我运行程序,它不会显示任何匹配,尽管我知道必须有一个匹配。我认为它在if块的某个地方。我假设缩进在代码中是正确的。继续你的策略,这段代码应该会起作用
def compareLists(self, listA, listB):
sameWords = list()
for a in xrange(0,len(listA)):
for b in xrange(0,len(listB)):
if listA[a] == listB[b]:
sameWords.append(listA[a])
return sameWords
或者,正如@Efferalgan所建议的,只需执行集合交集
def compareLists(self, listA, listB):
return list(set(listA) & set(listB))
注意:设置的交叉点将从结果中删除重复的匹配词
正如您所说,您正在读取文本文件中的行,看起来换行符仍在其中
my_text_list = [s for s in open("my_text.txt").read().rsplit()]
你试过调试器吗?您可以很容易地观察listA或listB在每个迭代步骤中的值。
list(set(listA)&set(listB))
将准确返回所需的值,如图所示。删除过程。这里没用。我很惊讶这居然没有显示匹配项。即使它效率低下且不需要通过过程,它仍应为您提供找到的所有匹配项的列表(包括重复项)。对从导入文件生成的列表执行print()
。我猜它包含的单词以\n
结尾。它仍然不起作用。我很确定这是因为.txt文件,但我可以把它打印成一个列表,所以我正确地导入了它。文件可能太大了吗?它大约有15000行。列表的大小应该无关紧要,它没有那么大。打印列表,目视检查其中的单词是否符合您的预期。15000行就可以了。你能把你打印的一些列表贴出来吗?“Weiltingen\n”、“Unterschwaningen\n”、“Theilenhofen\n”、“R\xc3\xb6ckcken\n”、“Pfofeld\n”、“Ornbau\n”、“Muhr am See\n”,在我删除了它的显示后:(顺便说一句)