Применение шаблона к списку и удаление противоречивых элементов – неожиданный вывод и IndexErrorPython

Программы на Python
Anonymous
Применение шаблона к списку и удаление противоречивых элементов – неожиданный вывод и IndexError

Сообщение Anonymous »

Я реализую функцию apply_pattern_to_list(), которая применяет шаблон к списку и удаляет противоречивые элементы. Однако у меня возникли проблемы с неожиданным выводом и ошибкой IndexError. Вот моя текущая реализация:

Код: Выделить всё

def apply_pattern_to_list(L, pattern='+-', from_start=True):
def is_consistent(a, b, p):
return (p == '+' and a < b) or (p == '-' and a > b)

result = {}
pattern = pattern * (len(L) // len(pattern) + 1)

if from_start:
i = 0
while i < len(L) - 1:
if not is_consistent(L[i], L[i+1], pattern[i % len(pattern)]):
result[i+1] = L.pop(i+1)
else:
i += 1
else:
i = len(L) - 1
while i > 0:
if not is_consistent(L[i-1], L[i], pattern[(len(L)-i) % len(pattern)]):
result[i-len(L)] = L.pop(i-1)
else:
i -= 1

return result
Ожидаемое поведение
Функция должна удалять элементы, не соответствующие заданному шаблону, либо из начала, либо из конца списка, и возвращать словарь удаленных элементов с их позициями.
Текущие проблемы
Вывод не соответствует ожидаемому результату. В некоторых случаях возникает ошибка IndexError, особенно если from_start=False.
Вопросы
  • Какие изменения необходимы для исправления вывода и соответствия ожидаемому поведению?
  • Как устранить ошибку IndexError, особенно для from_start=False< /code> случай?
  • Есть ли какие-либо логические ошибки в моей реализации приложения шаблона?
Дополнительная информация
Функция должна работать с различными шаблонами и списками входных данных, как показано в тестовых примерах.
  • Ожидаемый результат
  • Ожидается вместе с моим результатом


Подробнее здесь: https://stackoverflow.com/questions/790 ... ted-output

Вернуться в «Python»