回答
>>> a = [[]]
>>> b = []
>>> b in a
True
>>> b is a[0]
False
这证明它是一个值检查(至少默认),而不是身份检查。请记住,如果需要,班级可以重写__contains__()
以使其成为身份检查。但是,默认情况下,没有。
它取决于班级如何做检查。对于内建list
,它使用==
运算符;否则你不能安全地使用'something' in somelist
。
更具体地说,它检查项目是否等于列表中的项目 - 因此在内部它最有可能是hash(a) == hash(b)
比较;如果哈希值相等,则对象本身也可能被比较。
它不会只是一个哈希检查 - 如果没有值相等,哈希值可以相等。 – 2012-04-18 13:25:14
谢谢你们,这是非常有用的信息! – 2012-04-18 18:56:32
这是错误的。我只是定义了一个'__eq__'方法,它已被(无意识地)由'__contains__'或'in'拾取。因此,很可能'list'实现了'a .__ eq __(b)'比较。 – Atcold 2018-02-13 17:27:16
- 1. Python`in`与`__contains__`的功能
- 2. 如何在python中设置__contains__方法?
- 3. 如何成功实现我自己的ArrayList类的__contains__方法?
- 4. Python列表是否具有与__contains__等效的测试身份的功能?
- 5. 什么__contains__做什么,可以调用__contains__功能
- 6. Java中的类Python列表功能
- 7. __contains__语法
- 8. python新手排序功能和列表扩展方法
- 9. 功能Python与列表
- 10. Python - 从列表中删除列表(与.pop())类似的功能
- 11. 类和方法,在Python中有列表
- 12. 自定义类的列表上使用__contains__对象
- 13. 功能为Python类
- 14. pop()方法在Python列表方法不能正常工作
- 15. Python的方法来提升功能
- 16. 功能有可能成为聚类算法的列表吗?
- 17. Python的 - 使用外部功能类的方法
- 18. 使用相同的功能,实例和类方法在Python
- 19. Python中的打印列表功能
- 20. Python 2.7版:功能访问列表
- 21. 功能之间的python传递列表
- 22. 的Python 3.4导入列表的功能
- 23. 调用从Python中的列表功能
- 24. 的Python - 附加功能的列表
- 25. 的Python - 访问全局列表功能
- 26. 在Python列表中做什么功能?
- 27. Python shell的方法列表?
- 28. Python的方法列表
- 29. Python pandas read_csv类似列表中的功能到DataFrame?
- 30. Perl模块的类比列表:: Util,List :: Python中的MoreUtils功能
这是完美的谢谢你! – 2012-04-18 18:56:59