Поиск меньшего списка в большем. Аналог str.find для списков. (python)

Есть два списка: a и b. Требуется проверить вхождение a в b и выдать индекс первого элемента. Если a в b не обнаружен вернуть -1 Например:

b = [1, 2, 3, 4, 5, 6, 7, 8, 9]
a = [4, 5, 6]
#вернёт 3

b = [1, 2, 3, 4, 5, 6, 7, 8, 9]
a = [4, 6, 5]
#вернёт -1

Я не могу использовать библиотеки кроме стандартных, идущих вместе с пайтоном.


Извините, написал непонятно. Мне нужно не посчитать количество вхождений.

[1, 2, 3, 4, 5, 6, 7, 8, 9]
         [4, 5, 6]

Мне нужно, чтобы функция подставила один список к другому и нашла индекс первого элемента a в b (В данном случае элемента 4 под третьим индексом)


Ответы (3 шт):

Автор решения: RomanR
b = [1, 2, 3, 4, 5, 6, 7, 8, 9]
a = [4, 5, 6]
if len(a) <= len(b):
    for i in range(0, len(b) - len(a)):
        if b[i:i+len(a)] == a:
            print(b.index(a[0]))
            exit()
print(-1)
→ Ссылка
Автор решения: Alexey_Chebotarev

Кажется никто не понял, что мне нужно, но задача оказалась гораздо легче чем я думал, и я оставлю здесь рабочий код)

def find(b, a):
    first = b.index(a[0])
    result = True
    for i in range(1, len(a)):
        if not a[i] == b[i+first]:
            result = False
            break
    if not result:
        return -1
    return first
→ Ссылка
Автор решения: Sergey Glukhov
b = [1, 2, 3, 4, 5, 6, 7, 8, 9]
a = [4, 6, 5]


def finder(list_a, list_b):
    r = []
    for i in list_a:
        if i in list_b:
            r.append(list_b.index(i))
    if Len(r) == 0:
        return -1
    return r
    
print(finder(list_a=a, list_b=b))
        
→ Ссылка