Как найти наиболее частые места в списке для определенного списка элементов? - PullRequest
0 голосов
/ 05 августа 2020

Например, есть список элементов

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

Я пытаюсь найти места (индексы) внутри приведенного выше списка, чтобы найти совпадения секунды

[1,4,3,8]

введите описание изображения здесь

Есть ли для этого общие и элегантные алгоритмы?

1 Ответ

2 голосов
/ 05 августа 2020

Вот простое визуальное представление этого с помощью графика:

import matplotlib.pyplot as plt

lst = [8,6,3,7,1,8,8,9,2,0,5,4,7,9,2,8,2,5,5,6,3,0,1,7,9,2,9,6,7,0,5,2,7,4,5,6,2,1,9,0,3,1,3,9,4,9,2,7,5,9,0,5,2,1,8,6,4]
target = [1,4,3,8]
result = [0]*len(lst)

for i in range(len(lst)):
    if lst[i] in target:
        result[i] = 1

plt.step(range(len(lst)), result)
plt.show()

Дает следующий, довольно простой для анализа результат:

введите описание изображения здесь

С осью x, указывающей индекс в списке, 1 представляет собой целевой список, а 0 - нет.

...