Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较两个列表(python)_Python_List - Fatal编程技术网

比较两个列表(python)

比较两个列表(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

我需要比较一个程序中的两个列表,看看是否有匹配的字符串。其中一个是我已经导入的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]:
                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”,在我删除了它的显示后:(顺便说一句)