在Python中循环访问2个列表以删除匹配项

时间:2016-10-11 10:05:24

标签: python-3.x for-loop iteration

我有两个列表,我想在Python中循环查找匹配并删除它们。 第一个叫做SavedWordData,它的长度是2156,第二个叫做listReturned,它的长度是1000.

然后我尝试这样做:

maxLenReturned = len(listReturned)
maxLenSaved = len(savedWordData)

    for i in range(maxLenSaved):
    for x in range(maxLenReturned):
        if savedWordData[i] == listReturned[x]:
            savedWordData.pop(i)

但是当我这样做时,我收到一条错误消息: IndexError:列表索引超出范围 这表明我超出了某些列表的范围,但我不明白为什么以及哪些列表超出了它的范围?

1 个答案:

答案 0 :(得分:2)

当你在列表上调用pop()时,它会减小它的大小,所以假设你有一个大小为100的列表并且你已经弹出了50个元素。当你尝试获取第51个元素时它会引发Index out of range错误,因为现在尺寸减少到50。

您应该了解列表推导。它们真的很棒,你可以把它们完成一行。

savedWordData = [x for x in savedWordData if x not in listReturned]

就是这样。 listReturned中没有savedWordData中的所有项目。