Сравнить два списка в python и вернуть индексы согласованных значений

Для двух списков 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).

Ответ 1

Лучший способ сделать это - сделать b a 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]

Ответ 2

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

Ответ 3

Для более крупных списков это может помочь:

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

Обязательно импортируйте numpy.