• 特性

    • 无序,不重复的数据组合,用{}表示,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. Eucalyptus——EC2的开源实现(转载)

    Eucalyptus[22]是加利福尼亚大学的 Daniel Nurmi 等人实现的,是一个用于实现云计算的开源软件基础设施.Eucalyptus 是 Amazon EC2 的一个开源实现,它与 EC ...

  2. PHP的加解密:如何安装ioncube扩展?

    一.下载loader-wizard.php(支持php5.3.php5.4.php5.5.php5.6版本) ioncube提供了一个安装的向导程序,可以非常方便的帮助检测php的运行环境,自动给出提 ...

  3. 安装python3后,没有Scripts目录的解决办法

    设置好python环境变量后,执行命令即可:python -m ensurepip

  4. 使用工具Source Monitor测量您Java代码的环复杂度

    代码的环复杂度(Cyclomatic complexity,有时也翻译成圈复杂度)是一种代码复杂度的衡量标准,在1976年由Thomas J. McCabe, Sr. 提出. 来看看计算公式. 代码环 ...

  5. [dp]uestc oj 邱老师看电影

      定义状态dp[w][b]表示有w只白老鼠,b只黑老鼠时妹子赢的概率,分两种情况妹子抓到白老鼠概率为w/(w+b)和否则只有妹子抓黑老鼠和邱老师抓黑老鼠妹子才可能赢,再分两种情况:酱神抓白老鼠,状态 ...

  6. noip模拟赛#15

    #15 T1:a[i]>=a[i/2].输出a的最大字典序 =>可以发现这是二叉树的情况那么就先预处理出每个点有多少个儿子然后递归处理就可以了. #include<cstdio> ...

  7. (六)VMware Harbor简单使用

    VMware Harbor简单使用 1. 登陆: [用户:admin  , 密码:Harbor12345]配置文件里设置的 登陆后的界面: 2. 用户管理: 2.1 新近用户 3. 仓库管理: 3.1 ...

  8. Google「Game Builder」:不懂编程,也能开发 3D 游戏

    简评: 之前微软曾推出过「Kodu Game Lab」,它可以让完全没有编程经验的人通过简单的步骤打造属于自己的游戏.无独有偶,Google 最近在 Steam 也推出了类似的程序「Game Buil ...

  9. java基础—抽象类介绍

    一.抽象类介绍

  10. JQuery EasyUI学习记录(三)

    1.jQuery EasyUI messager使用方式 1.1 alert方法 $(function(){ //1.alert方法---提示框 $.messager.alert("标题&q ...