• 特性

    • 无序,不重复的数据组合,用{}表示,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. css 居中问题总结

    html代码: <div class="box"> <div class="box-item"> 文字 </div> < ...

  2. java项目定时任务实现

    首先配置spring-context.xml文件 在xmlns 下加如下代码 xmlns:task="http://www.springframework.org/schema/task&q ...

  3. Mac版 Slickedit 2013 v18.0.3.3 破解

    今天在Windows机器上面,无调试器的情况下,把 Mac系统下的Slickedit给破解了并测试通过. 原始安装包下载: Mac Slickedit 2013 (v18.0.3.3) 破解文件下载地 ...

  4. 微信成为HTML5技术流行的最大推手

    很多热点的事件都是厚积薄发,HTML5就是如此.此前iOS和Android系统已经放弃了Flash,这让HTML5有了一个天然的成长基础.而现在手机硬件的提升和HTML5本身的完善,使得基于HTML5 ...

  5. Nginx 基本配置介绍

    一.什么是Nginx Nginx 是一个免费的,开源的,高性能的HTTP服务器和反向代理,以及IMAP / POP3代理服务器. Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻 ...

  6. vue-cli版本更新(2.9.1)问题记录-2

    今天想把做好的页面放在手机端浏览,发现新版的vue-cli无论在PC还是手机都只能用localhost访问(127.0.0.1除外).....(这样还怎么让我用手机吃鸡了!TT),于是我在网上查找了一 ...

  7. wsl基本安装与配置

    wsl简介: Windows Subsystem for Linux(简称WSL)是一个为在Windows 10上能够原生运行Linux二进制可执行文件(ELF格式)的兼容层.它是由微软与Canoni ...

  8. JDBC-防止SQL注入问题

      String sql = "select * from user where name = '" + name + "' and password = '" ...

  9. constraint the design

  10. MySQL迁移升级解决方案

    任务背景 由于现有业务架构已不能满足当前业务需求,在保证数据完整的前提下,现需要将原有数据库迁移到另外一台单独的服务器上,在保证原有服务正常的情况下,将原有LAMP环境中mysql数据库版本5.6.3 ...