Найти индекс массива внутри другого массива - PullRequest
0 голосов
/ 26 сентября 2019

Допустим, у меня есть два примерных массива или списка

a = ['P', 'P' ,'Q', 'Q','P' ,'P','Q', 'Q']
b = ['Q', 'Q','P' ,'P']

, и в результате я ожидаю, что он начинается с

start = 2
end = 6

Ответы [ 3 ]

2 голосов
/ 26 сентября 2019

Пример ниже без преобразования в строку


a = ['P', 'P' ,'Q', 'Q','P' ,'P','Q', 'Q']
b = ['Q', 'Q','P' ,'P']

for i in range(len(a)):
    if a[i:i+len(b)] == b:
        print i,i+len(f)
        break


0 голосов
/ 26 сентября 2019

спасибо за вашу помощь, основываясь на комментариях, я смог найти это

a = ['P', 'P' ,'Q', 'Q','P' ,'P','Q', 'Q']
b = ['Q', 'Q','P' ,'P']

start = '|'.join(a).split('|'.join(b))[0].count('|')
end  = start + len(b)

if start == len(a)-1:
    print('the subset wasnt found')
else:
    print('the subset was found, start: ', start, 'end: ',end)

0 голосов
/ 26 сентября 2019

Проще всего, если вы преобразуете списки в строку:

a1 = ''.join(a)
b1 = ''.join(b)

, тогда вы можете использовать функцию str.find(), которая возвращает самый низкий индекс подстроки, если он найден в данной строке.Если его не найдено, возвращается -1.

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