Python学习笔记-集合(set)

什么是set

set 集合,元素是无序(存放顺序与输出顺序不同)不重复(元素是唯一的)的 用于保存不允许重复的元素,也可以用于 快速去重

底层原理:集合是一个哈希表

哈希表:无序,不重复

创建
set1 = set()          # 声明一个空集合
set2 = {1,2,5,7,9,10} # 声明一个非空集合
set0 = { }            # 声明一个字典!不是空集合
访问
增删改查
  • 增加的方法有 .add .update()

    • .add() 向集合中添加一个元素
    • .update() 向集合中添加一组 可迭代对象 ,类似 list.extend()
    set1 = {1,2,3}
    set2 = {0,4,5}
    set2.add(6)
    print(set2)
    set1.update(set2)
    print(set1)
    ==============================
    {0, 4, 5, 6}
    {0, 1, 2, 3, 4, 5, 6}
    
  • 删除的方法有 .remogve() .discard() .pop() .clear() del()

    • .remove() 删除集合中指定的元素,若无此元素则抛出异常

    • .discard() 删除集合中指定的元素,若无此元素则不做任何动作

    • .pop() 随机删除集合中的一个元素,并返回这个元素

    • .clear() 清空集合

    • del() 清空集合并回收内存

    set1 = {1,2,3,4,0,5}
    print(set1)
    set1.remove(0)
    print(set1)
    set1.discard(5)
    print(set1)
    s = str(set1.pop())
    print(set1,'remove:'+s)
    set1.clear()
    print(set1)
    del(set1)
    print(set1)
    ============================
    {0, 1, 2, 3, 4, 5}
    {1, 2, 3, 4, 5}
    {1, 2, 3, 4}
    {2, 3, 4} remove:1
    set()
    NameError: name 'set1' is not defined
    
  • 曲线救国的修改和查询

    利用 setlist 之间的强制类型转换,借助 list 的方法实现修改和查询

其他方法
  • 交并差集运算

    • 交集 & 或使用.intersection()方法

      set1 = {1,5,8,0,6}
      set2 = {1,7,9,0,5}
      print(set1 & set2)
      print(set1.intersection(set2))
      ==========================
      {0, 1, 5}
      {0, 1, 5}
      
    • 并集 | 或使用.union()方法

      set1 = {1,5,8,0,6}
      set2 = {1,7,9,0,5}
      print(set1 | set2)
      print(set1.union(set2))
      ===========================
      {0, 1, 5, 6, 7, 8, 9}
      {0, 1, 5, 6, 7, 8, 9}
      
    • 差集 - 或使用.difference()方法

      set1 = {1,5,8,0,6}
      set2 = {1,7,9,0,5}
      print(set1 - set2)
      print(set1.difference(set2))
      print(set2 - set1)
      print(set2.difference(set1))
      ===========================
      {8, 6}
      {8, 6}
      {9, 7}
      {9, 7}
      
    • 对称差集 ^ 或使用 .symmetric_difference() 方法

      set1 = {1,5,8,0,6}
      set2 = {1,7,9,0,5}
      print(set1 ^ set2)
      print(set1.symmetric_difference(set2))
      ===========================
      {6, 7, 8, 9}
      {6, 7, 8, 9}
      
不支持的操作
  • 不支持 .insert() .pop() .index() del() 等函数中,与下标有关的操作
支持的符号
  • in 检查元素是否在集合中存在
  • is 检查两个集合地址是否相同
不支持的符号
  • [ ] 集合不支持索引操作

  • [:] 集合不支持切片操作

  • + 集合不支持连接操作

  • * 集合不支持重复操作

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值