Python - 检查值是否在列表

时间:2018-04-24 09:16:21

标签: python

在这样的事情

class Obj:
    def __init__(self, x, y):
        self.x = x
        self.y = y


li = [Obj(0, 0), Obj(0, 1), Obj(2, 3)]

print(Obj(2,3) in li)

我有一个False输出,因为即使x和y相同,它也会将对象计为另一个实例。我可以使用列表中的循环并检查

来解决问题
if(2==o.x and 3==o.y):
    return True

是否有一些更简洁的方法可以在不使用循环的情况下获得此功能?

2 个答案:

答案 0 :(得分:0)

==!=的特殊方法:

class Obj:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __eq__(self, Object):
        """ == comparison method."""
        return self.x == Object.x and self.y == Object.y

    def __ne__(self, Object):
        """ != comparison method."""
        return not self.__eq__(self, Object)

答案 1 :(得分:0)

在课堂上实施如下所示的功能__eq__

def __eq__(self,  x,y):
     if self.x==x and self.y==y:
        return True

之后使用list comprehension遍历list个对象。

result = any(Obj(2,3) == i for i in obj_list )