Как сделать проверку на последовательность определенных элементов в 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