Решение задачи: 3 последовательных значения

Методом последовательного подбора чисел из списка (x) нужно найти 3 последовательных значения которые равны списку (у). Как можно решить эту задачу? Вот мой код, как я пытался сделать

x = [12, 111,999, 333333, 22222222, 408, 1142, 326, 734, 45, 281,] 
y = [734, 45, 281]
    
#подбор первого числа которая больше 500 но меньше 1500
for i in range(len(x)):
    if 500 <= x[i] <= 1500 : break
z = x[i:i+3] 
if y == z:
    print("верно")
else:
    print("не верно")

Ответы (1 шт):

Автор решения: gil9red

Эту задачку можно решить в лоб через срезы:

  • Перебираем индексы x
  • Берем у x срез от текущего индекса и на длину y
  • Если срез равен y, то завершаем перебор и выводим что верно

Наглядно на итерациях:

  • i = 0, sub_arr = [12, 111, 999]
  • i = 1, sub_arr = [111, 999, 333333]
  • ...
  • i = 8, sub_arr = [734, 45, 281]

Пример:

x = [12, 111, 999, 333333, 22222222, 408, 1142, 326, 734, 45, 281, ]
y = [734, 45, 281]

found = False
for i in range(len(x)):
    sub_arr = x[i:i+len(y)]
    if sub_arr == y:
        found = True
        break

print("верно" if found else "не верно")
→ Ссылка