比较python中的两个列表并返回匹配值的索引

时间:2012-04-28 19:53:12

标签: python list match indices

对于两个列表a和b,我如何获得两者中出现的值的索引?例如,

a = [1, 2, 3, 4, 5]
b = [9, 7, 6, 5, 1, 0]

return_indices_of_a(a, b)

会返回[0,4](a[0],a[4]) = (1,5)

3 个答案:

答案 0 :(得分:20)

执行此操作的最佳方法是将b设为set,因为您只检查其中的成员资格。

>>> a = [1, 2, 3, 4, 5]
>>> b = set([9, 7, 6, 5, 1, 0])
>>> [i for i, item in enumerate(a) if item in b]
[0, 4]

答案 1 :(得分:5)

def return_indices_of_a(a, b):
  b_set = set(b)
  return [i for i, v in enumerate(a) if v in b_set]

答案 2 :(得分:2)

对于较大的列表,这可能有所帮助:

for item in a:
index.append(bisect.bisect(b,item))
    idx = np.unique(index).tolist()

请务必导入numpy。