回答
>>> 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