Последовательный поиск по массивам в python - PullRequest
0 голосов
/ 01 апреля 2020

Итак, у меня есть следующие 2 массива:

a = [1,2,3]
b = [1,2,4,1,2,5,1,3,2,4,5,11,23,24,51,72,5,91,19,0,1,2,4,2,3,45,3,2,1,2,6,7,56,78,354,3,2,1,0,111,15,1,2,3,5,6,4,7,3,8,910,678]

Мне нужно найти массив A (в точно такой же последовательности) в массиве B, используя Python. Я пробовал 2 разных способа решения этой проблемы. Первый метод привел к ошибке индекса, которую я не мог разрешить вообще. Второй метод дал мне ожидаемый результат в форме двоичного ответа, True / False. У меня сейчас нет идей. Пожалуйста, помогите мне подойти к этой проблеме подходящим образом.

#one of the attempts that i made
from collections import Counter
a = [1,2,3]
b = [1,2,4,1,2,5,1,3,2,4,5,11,23,24,51,72,5,91,19,0,1,2,4,2,3,45,3,2,1,2,6,7,56,78,354,3,2,1,0,111,15,1,2,3,5,6,4,7,3,8,910,678]
print (a,b)

def string_conv(array):
    string = ''
    for i in range(len(array)):
        string += str(array[i])
    return string

a = string_conv(a)
b = string_conv(b)

print (a,b)

def array_check(string, substring):
    c = Counter(string)
    for char in substring:
        if c[char] > 0:
            c[char] -= 1
        else:
            return False
    return True

print (array_check(a, b))

1 Ответ

1 голос
/ 01 апреля 2020

Возможно, есть более элегантный способ сделать это, но это должно сработать:

for i in range(len(b) - len(a)):
    for j in range(len(a)):
        if b[i + j] == a[j]:
            if j == len(a) - 1:
                print("Found it!")
            else:
                continue
        else:
            break
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...