В чистом Python вы можете использовать генераторное понимание с next
и enumerate
:
A = [53, 1, 17, 4, 13, 2, 17]
B = [4, 3, 1]
B_set = set(B)
first_lst = next(idx for idx, val in enumerate(A) if val in B_set) # 1
Обратите внимание, что мы хешируем значения в B
через set
для оптимизации стоимости поиска.Сложность O ( m + n ), где m и n - количество элементов в A
и B
соответственно,Для обработки ошибок в случае, если совпадение не найдено, вы можете указать аргумент по умолчанию:
first_list = next((idx for idx, val in enumerate(A) if val in B_set), len(A))
Если вы счастливы использовать стороннюю библиотеку, вы можете использовать NumPy.Здесь нет обработки ошибок в случае несоответствия:
import numpy as np
A = np.array([53, 1, 17, 4, 13, 2, 17])
B = np.array([4, 3, 1])
first_np = np.where(np.in1d(A, B))[0][0] # 1