Python list subtraction operation
Use a list comprehension:
[item for item in x if item not in y]
If you want to use the -
infix syntax, you can just do:
class MyList(list): def __init__(self, *args): super(MyList, self).__init__(args) def __sub__(self, other): return self.__class__(*[item for item in self if item not in other])
you can then use it like:
x = MyList(1, 2, 3, 4)y = MyList(2, 5, 2)z = x - y
But if you don't absolutely need list properties (for example, ordering), just use sets as the other answers recommend.
Use set difference
>>> z = list(set(x) - set(y))>>> z[0, 8, 2, 4, 6]
Or you might just have x and y be sets so you don't have to do any conversions.