Python list subtraction operation Python list subtraction operation python python

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.


if duplicate and ordering items are problem :

[i for i in a if not i in b or b.remove(i)]

a = [1,2,3,3,3,3,4]b = [1,3]result: [2, 3, 3, 3, 4]