Python在一个列表中查找不在另一列表中的元素的索引

时间:2019-11-14 02:45:21

标签: python list

list_1 = ["a", "b", "c", "d", "e"]
list_2 = ["a", "c", "d"] 

我想要list_1中不在list_2中的元素的索引。我希望在这里

[1, 4]

就我而言,list_2list_1的子集,所有元素都是唯一的。有没有不使用显式循环的更好方法吗?

1 个答案:

答案 0 :(得分:10)

您可以使用条件列表理解:

>>> [i for i, item in enumerate(list_1) if item not in list_2]
[1, 4]

此解决方案的时间复杂度为O(n*m)。对于较大的列表,将list_2转换为set是有意义的,因为在set中搜索要快得多。以下解决方案是O(n)

>>> set_2 = set(list_2)
>>> [i for i, item in enumerate(list_1) if item not in set_2]
[1, 4]