Как сделать проверку на последовательность определенных элементов в Python

with open('cube.in') as ri:
    cases = [str(line).strip('\n') for line in ri]
print(cases)
splitcases = []
for i in cases:
    splitcases.append(list(i))
print(splitcases)
output: [['6', '4', '2', '5', '6'], ['6', '1', '4', '2', '5', '4'], ['1', '5'], ['2', '4'], ['1', '3', '2', '5', '6', '2'], ['5', '2', '1', '3', '4'], ['3', '2', '1', '6', '2', '5'], ['5', '2']]

В выводе есть несколько списков, в них последовательность чисел. Мне нужно забраковать определенные по правилам "после 2 не может следовать после и перед 5" "после 1 не может следовать после и перед 6" "после 3 не может следовать после и перед 4" и вывести для них единицу. Для списков которые соответствуют правилу вывести нуль.

Я не могу понять с помощью чего выразить проверку на определенные условия для списка.


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

Автор решения: Danis
def f(lst, dict_):
    for i in range(len(lst) - 1):
        if lst[i] in dict_ and dict_[lst[i]] == lst[i + 1]:
            return 1
    return 0

dict_ = {"2": "5", "5": "2",
         "1": "4", "4": "1",
         "3": "4", "4": "3"}
lst = [['6', '4', '2', '5', '6'], ['6', '1', '4', '2', '5', '4'], ['1', '5'], ['2', '4'], ['1', '3', '2', '5', '6', '2'], ['5', '2', '1', '3', '4'], ['3', '2', '1', '6', '2', '5'], ['5', '2']]

for i in lst:
    print(f(i, dict_))

вывод:

1
1
0
0
1
1
1
1

→ Ссылка