Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.
А это подборки моих материалов на канале
Данная статья из моей подборки по алгоритмам.
Поиск массива в массиве (списка в списке) на Python
Одно из моих наблюдений заключается в том, что студента чрезвычайно трудно заставить написать алгоритм, если он знает, что можно использовать готовое решение или готовую библиотечную функцию. Вот попробуйте ка заставить его искать массив в массиве на Python. Я имею в виду одномерные списки, конечно. А ведь кто-то же должен писать и такое. Только не говорите мне про ИИ, не доводите ради бога меня до инфаркта. Я то вырос на совсем иных примерах, мне напротив всё время хочется написать своё решение. Но что делать, старая школа.
И так есть два линейных списка, состоящих из чисел. Нужно найти первое вхождение одного списка в другом. Это пример алгоритма, который легко пересказать на обычном естественном языке. Берём первый элемент массива и ищем его во втором. Если элемент найден, то сравниваем последующие элементы списков. Если все совпадут, то первое вхождение найдено.
Именно такой алгоритм реализован в следующей программе. Функция получает два массива и номер элемента, с которого следует начинать поиск. Третьим параметром функции будет номер элемента массива list2 откуда начнём поиск.
Представленная программа берёт списки со стандартного устройства. Числа располагаются через пробел друг от друга. В начале идёт массив, где будет осуществляться поиск, потом массив, который будем искать. Для проверки программы удобно поместить исходные файлы в файл и воспользоваться перенаправлением
./p1.py < in
или
python3 p1.py < in
Например, для файла
1 2 3 4 1 3 4 1 3 4 1 2 1 1
3 4 1 2
Получим
8
Хорошего программирования. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.