Вы можете попробовать что-то вроде этого:
class mylist(list):
def __sub__(self, b):
result = self[:]
b = b[:]
while b:
try:
result.remove(b.pop())
except ValueError:
raise Exception("Not all elements found during subtraction")
return result
a = mylist([0, 1, 2, 1, 0] )
b = mylist([0, 1, 1])
>>> a - b
[2, 0]
Вы должны определить, что должны выводить [1, 2, 3] - [5, 6], хотя, я думаю, вы хотите [1, 2, 3], поэтому я игнорирую ValueError.
Edit:
Теперь я вижу, что вы хотели исключение, если a
не содержит все элементы, добавили его вместо передачи ValueError.