查找两个不同大小的无序Python列表中的匹配元素



我得到这个错误:index out of range, in if largerList[j] == smallerList[i]。我正在做一项关于二进制搜索树的作业,我把树放在列表中,我只是想比较这两个列表:

def matchList(largerList, smallerList) :
matches = []
for i in smallerList:
for j in largerList:
if largerList[j] == smallerList[i] :
matches[i] = smallerList[i]
return matches

我假设嵌套的for循环应该完全迭代每个循环中的所有元素,所以smallerList是较小的列表,所以smallerList不会使largerList越界。内部for循环应该完全遍历所有较大列表,将每个值与较小列表的每个元素进行比较。为什么它不起作用?

如果matches中不存在该索引,则不能使用matches[i]设置列表值。

尝试附加:

将此matches[i] = smallerList[i]更改为此matches = matches.append(smallerList[i])

试图在这样的列表中找到匹配的元素是相当低效的。你可以改进的一件事是使用列表理解:

matches = [i for i in largerList if i in smallerList]

但在数学上更明智的方法仍然是意识到我们有两组元素,我们想找到两组元素的交集,这样我们就可以写这样的东西:

matches = set(largerList).intersection(smallerList)

相关内容

  • 没有找到相关文章

最新更新