• 特性

    • 无序,不重复的数据组合,用{}表示,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. javascript中两种基本常用排序算法分析

    备注:内容大部分从网上复制,代码为自己手写.仅做知识的温故知新,并非原创. 1.冒泡排序(Bubble Sort) (1)算法描述 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两 ...

  2. SQL必知必会-笔记

    一.数据库/数据表 数据库(DATABASE):存储有组织的数据的容器; 数据库管理系统(DBMS):数据库软件.开发者通过 DBMS 操纵 DATABASE 表(TABLE):表是一种结构化的文件, ...

  3. CSS 利用border三角形绘制方法

    CSS 三角形绘制方法,这里面的transparent比较重要,有和没有影响很大: 原理:这个div是由4个三角形组成,每个三角对应一个border,隐藏其它3个border,就可以得到一个三角形. ...

  4. SCCM Collection 集合获取计算机最后启动时间

    获取计算机客户端最后一次启动时间,我们可以通过多种来源获取,如活动目录组 ,而不仅仅是SCCM 收集,希望对您有所帮助,下面分享PowerShell 脚本 # 1 $CollectionName = ...

  5. 编写生成32位大写和小写字符的md5的函数

    package nicetime.com.practise; import java.security.MessageDigest; /** * MD5加密是JAVA应用中常见的算法,请写出两个MD5 ...

  6. 日常-acm-子序列的和

    输入两个正整数n<m<10^6,输出,保留五位小数.输入包含多组数据,结束标记为n=m=0. 样例输入: 2 4 65536 655360 0 0 样例输出: Case 1:0.42361 ...

  7. Tarjan的学习笔记 求割边求割点

    博主图论比较弱,搜了模版也不会用... 所以决心学习下tarjan算法. 割点和割边的概念不在赘述,tarjan能在线性时间复杂度内求出割边. 重要的概念:时间戟,就是一个全局变量clock记录访问结 ...

  8. Array - Two Sum

    import java.util.HashMap; import java.util.Map; /** * 分析: * 普通实现-嵌套循环两次,时间O(n2),空间O(1) * 复杂实现-循环一次,时 ...

  9. tcp、http和socket的区别

    本文原链接:https://www.jianshu.com/p/88d69454bdde tcp.http和socket的区别 一:tcp协议 tcp协议属于传输层协议(UDP也属于传输层协议,但是U ...

  10. caffe parse_log.sh

    画loss曲线需要用到此shell脚本 #!/bin/bash # Usage parse_log.sh caffe.log # It creates the following two text f ...