Заголовок немного расплывчатый, вот моя проблема.Как уменьшить содержимое списка на основе значений другого списка?
Я пытаюсь уменьшить содержимое одного списка на основе значений справа и слева от элемента в другом списке.
Пример:
Если У меня есть следующие 2 списка.
a = [1,2,3,5,7,8]
b = [1,2,3,4,7]
и мое ограничение а = Ь + 1
Я хочу вернуть
a = [2,3,5,8]
b = [1,2,4,7]
1 и 7 не может быть в, потому что нет нет 0 или 6 в б.
3 не может быть в b, потому что нет 4 в.
У меня возникли проблемы с концептуализацией того, как я должен подходить к этому.
Моя текущая попытка:
c = []
d = []
for i in a:
for j in b:
if (i+1) == j or (i-1) ==j:
c.append(i)
d.append(j)
с идеей, что я буду тогда делать а = с и Ь = d, но результат я получаю
c= [1,2,2,3,3,5,8]
d= [2,1,3,2,4,4,7]
Я полностью понимаю, почему я получаю эти числа в c и d, но я боюсь, что логика подхода к получению правильных чисел полностью ускользает от меня. Это небольшой подмножество большего проекта, который мне нужно сделать, но я особенно увлекся этой частью. Любая помощь будет оценена по достоинству.
Я думаю, вы могли бы решить эту проблему с каким-то алгоритм Левенштейна. Добавьте 1 к каждому элементу из b, сравните два списка и сохраните элементы, которые являются совпадением (т. Е. Удалите все вставки и удаления из a и b соответственно), а затем вычтите 1 из каждого элемента b снова. –