Hi, I want to test if an object IS in a list (identity and not equality test). I can if course write something like this :
test = False myobject = MyCustomClass(*args, **kw) for element in mylist: if element is myobject: test = True break and I can even write a isinlist(elt, mylist) function. But most of the time, when I need some basic feature in python, I discover later it is in fact already implemented. ;-) So, is there already something like that in python ? I tried to write : 'element is in mylist' but this appeared to be incorrect syntax... All objects involved all have an '__eq__' method. Thanks, N. P. PS: Btw, how is set element comparison implemented ? My first impression was that 'a' and 'b' members are considered equal if and only if hash(a) == hash(b), but I was obviously wrong : >>> class A(object): ... def __eq__(self,y): ... return False ... def __hash__(self): ... return 5 ... >>> a=A();b=A() >>> a==b False >>> hash(b)==hash(a) True >>> b in set([a]) False >>> S=set([a]) >>> S.difference([b]) set([<__main__.A object at 0xb7a91dac>]) So there is some equality check also, maybe only if '__eq__' is implemented ? -- http://mail.python.org/mailman/listinfo/python-list