集合及其hash原理(python)

集合的定义

  1. 集合只能用set函数来定义一个空集合
  2. 如 :set_ = set()

set元素

  1. set的元素要求必须可以hash
  2. 元素不可以使用索引
  3. set可以迭代
  4. 切片只能在线性结构中使用、set函数可以遍历可迭代对象
  5. set自动去重
  6. 注意列表,bytearray,set,字典(可变类型都不可)等是不可哈希类型—不能存放在set中
    注意它在确定是否是哈希类型时它将set中的所有元素都先查一遍包括set中容器中的元素
  7. 哈希函数—hash()用来确定是否可以哈希(哈希值一旦确定下来不能在改变)

set增加

  1. add(elem)–增加一个元素到set中 如果元素存在则什么都不做 注意:一次只能追加一个
  2. update(*others)
    1.合并其他元素到set集合中来
    2.参数必须是可迭代对象
    3.就地修改

set删除

  1. remove()移除一个元素,没有则抛异常
  2. discare()移除一个元素,如果不存在则什么也不做
  3. pop()因为集合无序所以随机删除一个,空集合则报错
  4. clear()清空所有元素
  5. Set—集合中使用in效率非常快—是因为它是可hash的—它的时间复杂度为O(1)
    列表等是不可hash的所以它的时间复杂度为O(n)

set修改,查询

  1. 修改
    1.要么删除,要么加如新的元素
  2. 查询:非线性结构,无法索引
  3. 遍历:可迭代所有元素
  4. 成员运算符:in 和 not in 判断元素是否在set中,效率高

hash原理

hash—原理

  1. 散值—它的hash值有一点微小的变化,那么它在内存中所存放的位置将发生巨大的变化
  2. 它将set中的每一个hash值都通过hash函数进行计算得到一个巨大的整数然后以16进制表示并翻译成字符显示
  3. 在使用in 时它是先将所要查的数通过hash函数转换为一个巨大的整数,然后直接一步到位,所以它的效率非常高
  4. hash值在内存中是不连续的
  5. 它是先开辟一段属于自己的内存,且如当添加如一个已有的hash值他将自动舍弃(通俗说就是如房间有数据则不进入)
  6. 在set中使用remove的效率极高—它先算hash值 然后一步定位
    幂等性==它在一次程序运行中某字符的hash值是一样的—但是在下一次运行的时候它的值将会改变

集合运算

交集: ( & 或者 intersection )

并集:    ( | 或者 union )

差集:    ( - 或者 difference )

反交集:   ( ^ 或者 symmetric_difference)

子集与超集:( 返回 true 或者 false)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时越zz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值