• 特性

    • 无序,不重复的数据组合,用{}表示,eg:{1,2,3,4,5,6}
  • 用途
    • 去重,把一个列表变成集合,就自动去重了
    • 关系测试,测试两组数据之间的交集,差集,并集,对称差集,包含(子集和超集,相交和不相交)关系
  • 基本语法
    • set():创建一个空集合,用set()创建,不能直接用s = {},这是创建一个空字典
    • s = set()
      print(type(s)) # =><class 'set'>
    • add:往集合中添加一个元素,如果添加的元素集合中已有,则集合没有任何变化,只能添加不可变数据
    • s = {,,,,}
      s.add()
      print(s) # =>{, , , , }
      s.add()
      print(s) # =>{, , , , , }
    • update:往集合中添加多个元素,自动去重
    • s = {,,,,}
      s.update({,,,,})
      print(s) # =>{, , , , , , , }
    • discard:删除指定元素,如果要删除的元素集合中不存在,do nothing
    • s = {,,,,}
      s.discard()
      print(s) # =>{, , , }
    • remove:删除指定元素,如果要删除的元素集合中不存在,报错
    • s = {,,,,}
      s.remove()
      print(s) # =>{, , , }
      s.remove() # =>报错
    • pop:随机删除一个元素,无序的,当集合为空时,报错
    • s = {,}
      s.pop()
      print(s) # =>{}
      s.pop()
      s.pop() # =>报错
    • clear:清空
    • s = {,,,,}
      s.clear()
      print(s) # =>set()
    • copy:浅复制
    • s = {,,,,}
      s1 = s.copy()
      print(s1) # =>{,, , , }
    • difference:差集,差集后的结果是一个新的集合

    • s1 = {,,,,}
      s2 = {,,,,}
      s3 = s1.difference(s2)
      print(s3) # =>{, , }
      s3 = s1-s2
      print(s3) # =>{, , }
      s4 = s2.difference(s1)
      print(s4) # =>{, , }
      s4 = s2-s1
      print(s4) # =>{, , }
    • difference_update:删除s1集合中含有s2集合中的元素,并返回给s1

    • s1 = {,,,,}
      s2 = {,,,,}
      s3 = s1.difference_update(s2)
      print(s1) # =>{, , }
    • intersection:交集,交集后的结果是一个新的集合

    • s1 = {,,,,}
      s2 = {,,,,}
      s3 = s1.intersection(s2)
      print(s3) # =>{, }
      s3 = s1 & s2
      print(s3) # =>{, }
      s3 = s2.intersection(s1)
      print(s3) # =>{, }
      s3 = s2 & s1
      print(s3) # =>{, }
    • intersection_update:将s1和s2的交集更新给s1

    • s1 = {,,,,}
      s2 = {,,,,}
      s1.intersection_update(s2)
      print(s1) # =>{, }
    • union:并集

    • s1 = {,,,,}
      s2 = {,,,,}
      s3 = s1.union(s2)
      print(s3) # =>{, , , , , , , }
      s3 = s1 | s2
      print(s3) # =>{, , , , , , , }
    • isdisjoint:判断两个集合是否有交集,如果没有,返回True,如果有,返回False

    • s1 = {,,,,}
      s2 = {,,,,}
      s3 = {,}
      print(s1.isdisjoint(s2)) # => False
      print(s1.isdisjoint(s3)) # =>True
    • issubset:判断s2是否是s1的子集,如果是,则True,or,False

      s1 = {,,,,}
      s2 = {,}
      print(s2.issubset(s1)) # =>True
    • issupper:判断s1是否是s2的超集
    • s1 = {,,,,}
      s2 = {,}
      print(s1.issuperset(s2)) # =>True
    • symmetric_difference:对称差集
    • s1 = {,,,,}
      s2 = {,,,,}
      s3 = s1.symmetric_difference(s2)
      print(s3) # =>{, , , , , }
      s3 = s2.symmetric_difference(s1)
      print(s3) # =>{, , , , , }
    • symmetric_difference_updata:将对称差集更新给s1,或者s2
    • s1 = {,,,,}
      s2 = {,,,,}
      s1.symmetric_difference_update(s2)
      print(s1) # =>{, , , , , }
      s2.symmetric_difference_update(s1)
      print(s2) # =>{, , , , }
  • 其他用法:
    • in ,not in 判断某元素是否在集合内
    • == ,!=判断两个集合是否相等

set的特性和基本用法——python3.6的更多相关文章

  1. JavaScript高级 面向对象(11)--对象的动态特性-关联数组用法

    说明(2017.4.2): 1. 对象的动态特性: (1)在js中,一个对象需要属性,就可以利用“对象名.属性 = 值”的方式为其添加,只要赋值成功,对象就新增这个属性. (2)对象属性的访问形式: ...

  2. dict的特性和基本语法——python3.6

    特性 key:value结构,字典中的每一个元素,都是键值对 key必须可被hash,且必须为不可变数据类型,必须唯一 可存放任意多个值,可修改,可以不唯一 无序 查找速度快,因为hash可以把key ...

  3. subprocess.run()用法python3.7

    def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): "&q ...

  4. 枚举特性FlagsAttribute的用法

    先看官方的解释:指示可以将枚举作为位域(即一组标志)处理. 看起来并不好理解,到底什么是作为位域处理? 其实说的通俗点就是用二进制的表示方式来处理数学集合概念中关于集合的或与非等运算方法. 有什么用 ...

  5. Python3 range() 函数用法

    Python3 range() 函数用法  Python3 内置函数 Python3 range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表. Pyth ...

  6. python学习2—python3特性与各种运算符

    python学习2—python3特性与各种运算符 python3与python2相比具有的新特性 在python2中可以使用__future__模块调用python3的特性 print()函数必须带 ...

  7. 让你的python程序同时兼容python2和python3

    python邮件列表里有人发表言论说「python3在10内都无法普及」.在我看来这样的观点有些过于悲观,python3和python2虽然不兼容,但他们之间差别并没很多人想像的那么大.你只需要对自己 ...

  8. (转载)C# 枚举 FlagsAttribute用法

    这是读过几篇文章后发现整理的最完整的一篇文章 转载地址:枚举特性FlagsAttribute的用法 先看官方的解释:指示可以将枚举作为位域(即一组标志)处理. 看起来并不好理解,到底什么是作为位域处理 ...

  9. C# 当中 LINQ 的常规用法(Lambda 方式)

    仅以本篇博文记录 LINQ 相关操作的基本知识,原型参考自 MSDN 相关知识,中间加以自己的理解与 DEMO. 1. IEnuemrable<T>.Select() Select 方法比 ...

随机推荐

  1. IE盒子模型和W3C盒子模型

    IE盒模型出现在ie5.5以下的版本当中,ie6以上就实行W3C盒模型. box-sizing有两个属性,border-box和content-box. border-box对应传统的盒子模型,即ie ...

  2. java中的常用内存区域总结

    <开发实战经典>     (1)栈内存空间:保存所有的对象名称     (2)堆内存空间:保存每个对象的具体属性内容     (3)全局数据区:保存static类型的属性     (4)全 ...

  3. Android tess_two Android图片文字识别

    文字识别一般都用的tesseract-ocr. GitHub:https://github.com/tesseract-ocr/tesseract 而Android对应的比较推荐的有个tess-two ...

  4. Linux 系统挂载阿里云数据盘

    适用系统:Linux(Redhat , CentOS,Debian,Ubuntu) *  Linux的云服务器数据盘未做分区和格式化,可以根据以下步骤进行分区以及格式化操作. 下面的操作将会把数据盘划 ...

  5. EasyUI:Easyui parser的用法

    Easyui的渲染机制是个比较坑的事情,在项目开发中,遇到需要等其渲染完成后处理一些事情,比如为联动的下拉框选中默认值,为某些表单元素自动填充值等!这就需要用到Easyui parser解析器了.官方 ...

  6. 在Windows Server 2012中搭建SQL Server 2012故障转移集群

    OK~ WSFC 2012 R2 年度盛宴开始~ 在本文中,老王将用一系列的场景,把动态仲裁,动态见证,票数调整,LowerQuorumPriorityNodeID,阻止仲裁等群集仲裁技术串起来,完成 ...

  7. Android商城开发系列(六)——使用 OkHttpUtils 请求网络 + 使用 fastjson解析数据

    OkHttp是Google推荐使用的一个开源的网络请求框架,Android开发中涉及到网络请求和接口调用现在大部分都是使用OkHttp,网上已经有不少人针对OkHttp进行了封装,这里推荐一下鸿洋大神 ...

  8. HDU 4507 吉哥系列故事——恨7不成妻 (数位DP)

    题意: 如果一个整数符合下面3个条件之一,那么我们就说这个整数和7有关: 1.整数中某一位是7: 2.整数的每一位加起来的和是7的整数倍: 3.这个整数是7的整数倍: 给定一个区间[L,R],问在此区 ...

  9. Codeforces Round #321 (Div. 2) D Kefa and Dishes(dp)

    用spfa,和dp是一样的.转移只和最后一个吃的dish和吃了哪些有关. 把松弛改成变长.因为是DAG,所以一定没环.操作最多有84934656,514ms跑过,实际远远没这么多. 脑补过一下费用流, ...

  10. 【vue iview】项目 win10 放在C盘 经常npm install不成功,就是因为 权限问题,把代码目录放到D盘就没事了。

    [vue iview]项目 win10 放在C盘 经常npm install不成功,就是因为 权限问题,把代码目录放到D盘就没事了.