python 吐血总结【集合】
集合
大括号 { } 或者 set() 函数创建集合,
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
集合是一种鲁棒性很好的数据结构,当元素顺序的重要性不如元素的唯一性和测试元素是否包含在集合中的效率时,大部分情况下这种数据结构极其有用。
python的内置集合类型有两种:
set(): 一种可变的、无序的、有限的集合,其元素是唯一的、不可变的(可哈希的)对象。
集合是元素的无序存储容器,不允许元素的重复,集合是可变对象
千万不要写成这样
集合的 set.pop() 的不同认为
有人认为 set.pop() 是随机删除集合中的一个元素、我在这里说句非也!
对于是字典和字符转换的集合是随机删除元素的。当集合是由列表和元组组成时、set.pop() 是从左边删除的第一个元素。
集合的底层实现原理
去重机制
Python
内部使用集合set
可以对可迭代对象进行去重。
在Python
内部是调用了__hash__
和__eq__
方法。
底层原理
__hash__和__eq__
调用两个对象的__hash__
方法。如果返回值不同,则说明两个对象不重复。
如果__hash__
方法的返回值相同,则调用两个对象的__eq__
方法。如果返回值不同,则说明两个对象不重复。如果相同,则两个对象重复
参考文章
http://c.biancheng.net/view/5302.html
字典和集合的内部结构都是一张哈希表:
- 对于字典而言,这张表存储了哈希值(hash)、键和值这 3 个元素。
- 而对集合来说,哈希表内只存储单一的元素。