猿问

Python列表减法运算

我想做类似的事情:


>>> 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列表不支持这种做法最好的方法是什么?


慕田峪9158850
浏览 1474回答 3
3回答

qq_笑_17

使用列表理解:[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   但是如果你不是绝对需要列表属性(例如,排序),只需使用集合作为其他答案推荐。

紫衣仙女

这是一个“集合减法”操作。使用set数据结构。在Python 2.7中:x = {1,2,3,4,5,6,7,8,9,0}y = {1,3,5,7,9}print x - y输出:>>> print x - yset([0, 8, 2, 4, 6])
随时随地看视频慕课网APP

相关分类

Python
我要回答