Решение
Вы добавили слишком много кода
a = [3, 6, 7, 9, 11, 14, 15]
b = [2, 6, 7, 10, 12, 15]
c = [x for x in a if x not in b]
Это дает следующий результат так же, как вы хотели !!
print(c)
# [3, 9, 11, 14]
Зачем повторять 3 раза?
Хорошо, посмотрите на исходные данные еще раз
original = [3, 6, 7, 9, 11, 14, 15]
# Index 0 1 2 3 4 5 6
# ✓ x x ✓ ✓ ✓ x
second = [2, 6, 7, 10, 12, 15]
# 0 1 2 3 4 5
# ✓ x x ✓ ✓ x
Вы получите 4 уникальных числа [3, 9, 11, 14], потому что в original
есть 4 числа, которых нет в second
список.
Вы получаете 3 повторных номера, потому что в second
есть 3 числа, которых нет в списке orginal
.
Тестирование
Вы можете проверитьэта идея путем расширения списков
original = [3, 6, 7, 9, 11, 14, 15]
second = [2, 6, 7, 10, 12, 15, 100, 200]
# print(c)
# [3, 3, 3, 3, 3, 9, 9, 9, 9, 9, 11, 11, 11, 11, 11, 14, 14, 14, 14, 14]
Теперь у нас есть 5 уникальных значений в списке second
, так что теперь это повторяется 5 раз!