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

回答:

使用列表解析:

[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   

但是如果您不是绝对需要列表属性(例如,排序),只需使用集合作为其他答案推荐。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Python list subtraction operation

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

97 − = 96