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

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

我想要获取在list_1中但不在list_2中的元素索引。我期望结果如下:
[1, 4]

对于我的情况,list_2list_1 的一个子集并且所有元素都是唯一的。是否有更好的方法可以在不使用显式循环的情况下完成此操作?

1个回答

12
你可以使用条件列表推导式:

你可以使用条件列表推导式:

>>> [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]

真棒的答案。简短明了,包括O复杂度。我很满意。 :) - Pavel Shishmarev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接