hashset
和set
集合
在 Python 中,hashset
和 set
集合之间有一定的关系,但它们并不完全相同。解释如下:
set
集合:set
是 Python 内置的数据类型,用于存储一组不重复的元素。- set集合的特点包括:
- 去重:集合中的元素必须是唯一的,不会重复。
- 无序:集合中的元素没有固定的顺序,不支持索引访问。
- 可哈希:集合中的元素必须是可哈希的,即可以使用内置函数
hash()
。 - 可迭代:虽然元素无序,但可以迭代遍历集合中的元素。
hashset
:hashset
并不是 Python 的标准库中的数据类型,但你可以自己实现一个类似于哈希集合的数据结构。- 通常情况下,我们使用 Python 的内置
set
来实现哈希集合的功能。 set
内部使用哈希表(hash table)来存储数据项,实现了去重和快速查找。- 关于哈希表:
问题 | 答案 |
---|---|
哈希表是什么Hash table | 哈希表是根据关键码(索引)的值而直接进行访问的数据结构。 |
哈希表能解决什么问题 | 快速判断一个元素是否出现集合里 |
哈希函数hash function | 把学生的姓名直接映射为哈希表上的索引的函数,之后可查询索引下标 |
哈希碰撞 | - 出现的原因:学生数据dataSize超过和哈希表大小tableSize - 导致结果:不同学生映射到相同索引 - 解决方法:拉链法和线性探测法 |
①拉链法 | 发生冲突的元素都被存储在链表中 |
②线性探测法 | - 前置条件:tableSize大于dataSize,表存在空位 - 解决方法:将冲突数据防止到空位处 |
常见的三种哈希结构是什么 | - 数组 - set (集合) - map(映射) |
什么时候用哈希法 | 需要快速判断一个元素是否出现集合里时 |
优缺点 | 牺牲了空间换取了时间:使用额外的数组,set或者是map来存放数据,才能实现快速的查找 |
- 区别:
set
是 Python 提供的标准集合类型,具有上述特点。- 如果你需要自定义一些额外的方法或属性,你可以创建一个类似于
hashset
的类,但通常情况下,直接使用 Python 的set
就足够了。