是否__contains__
列表类的方法来检查的对象本身是否是列表的元素,或者它检查列表中是否包含一个元素相当于给定的参数?
你能不能给我一个例子来证明?
是否__contains__
列表类的方法来检查的对象本身是否是列表的元素,或者它检查列表中是否包含一个元素相当于给定的参数?
你能不能给我一个例子来证明?
>>> a = [[]]
>>> b = []
>>> b in a
True
>>> b is a[0]
False
这证明,它是一个值检查(通过至少默认值),而不是一个身份检查。 但请记住,一个类可以根据需要覆盖__contains__()
使它的身份检查。 但同样,在默认情况下,没有。
这取决于它是如何做的检查类。 对于内建的list
它使用==
操作符; 否则,你不能如使用'something' in somelist
安全。
更具体地讲,它检查项目是等于在列表中的项目-所以在内部它是最有可能的一个hash(a) == hash(b)
进行比较; 如果散列相等的对象本身很可能比较了。