我想做类似的事情:
>>> x = [1,2,3,4,5,6,7,8,9,0] >>> x [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] >>> y = [1,3,5,7,9] >>> y [1, 3, 5, 7, 9] >>> y - x # (should return [2,4,6,8,0])
但是python列表不支持这样做最好的方法是什么?
使用列表推导:
[item for item in x if item not in y]
如果你想使用中-缀语法,你可以这样做:
-
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])
然后你可以像这样使用它:
x = MyList(1, 2, 3, 4) y = MyList(2, 5, 2) z = x - y
但是,如果您绝对不需要列表属性(例如,排序),只需按照其他答案的建议使用集合。