Эффективное решение для поиска подсписок в python - PullRequest
0 голосов
/ 20 июня 2020

Привет, я пытаюсь выполнить алгоритм поиска подсписка в python, который я нашел здесь , нужны эффективные решения с точки зрения временной сложности. Я пробовал:

l1 = [1,2,3,4]
l2 = [3,5,6,1,2,3,4,6]

l1_index = 0
l = len(l1)

sublist = []

for i in range(len(l2)):
    if l1[l1_index] == l2[i]:
        sublist.append(l2[i])
        l1_index += 1
        print("found")
        if len(sublist) == l:
            break
        continue
    else:
        print("not found")
        l1_index = 0

Ответы [ 2 ]

0 голосов
/ 20 июня 2020

Вот что вы можете сделать:

l1 = [1,2,3,4]
l2 = [3,5,6,1,2,3,4,6]

found = False
for i in range(len(l2)-len(l1)+1):
    if l2[i:i+len(l1)] == l1:
        found = True

if found:
    print('found')
else:
    print('not found')

Вывод:

found

Другой способ:

l1 = [1,2,3,4]
l2 = [3,5,6,1,2,3,4,6]

if str(l1)[1:-1] in str(l2)[1:-1]:
    print('found')
else:
    print('not found')

Вывод:

found
0 голосов
/ 20 июня 2020

Преобразуйте l1 и l2 в строки, а затем выполните поиск:

l1 = [1,2,3,4]
l2 = [3,5,6,1,2,3,4,6]
l1 = str(l1)
l2 = str(l2)
# This will return a string of the data only without the '[',']'
l1 = l1.split('[')[1].split(']')[0]
l2 = l2.split('[')[1].split(']')[0]
# Using string find function
if l2.find(l1) > 0 :
    print('l1 is a sublist of l2')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...