• 特性

    • 无序,不重复的数据组合,用{}表示,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. Kendo MVVM 数据绑定(一) attr

    Kendo MVVM 数据绑定(一) attr Kendo UI MVVM 数据绑定支持的绑定属性有 attr, checked, click, custom , disabled,enabled, ...

  2. Android中当item数量超过一定大小RecyclerView高度固定

    Android中当item数量超过一定大小时,将RecyclerView高度固定 方法1 直接通过LayoutParams来设定相应高度 ViewGroup.LayoutParams lp = rv. ...

  3. 枚举转List

    将枚举值转为list (name,value) 的形式 /// <summary> /// 获取口味 /// </summary> /// <returns>< ...

  4. vijos 1320 清点人数

    背景 NK中学组织同学们去五云山寨参加社会实践活动,按惯例要乘坐火车去.由于NK中学的学生很多,在火车开之前必须清点好人数. 描述 初始时,火车上没有学生:当同学们开始上火车时,年级主任从第一节车厢出 ...

  5. 跑edgebox

    这是edge的作者的代码:https://github.com/pdollar/edges 这是matlab写的,还需要装Matlab Image Processing Toolbox和Piotr's ...

  6. 谈谈TCP的四次挥手

    “挥手”是为了终止连接,TCP四次挥手的流程图如下: (在socket编程中,可以由客户端或服务端进行close操作来进行) 下面的图是由客户端主动关闭连接 MSL是什么?最长报文段寿命 ------ ...

  7. vector 下标操作

    比如:vector<int> ivec(3).. 当采用下标操作ivec[10]的时候,该操作是未定义的,在自己的机器上输出的值是零.建议使用迭代器进行操作.

  8. bower使用

    1,先安装nodejs(npm),Git 2,安装bower cmd执行到在项目文件夹下路径,执行npm install bower 3,执行bower init  项目根目录下将生成bower.js ...

  9. Confirm the Ending--freecodecamp算法题目

    Confirm the Ending(检查字符串结尾) 要求 判断一个字符串(str)是否以指定的字符串(target)结尾. 如果是,返回true;如果不是,返回false. 思路 利用.repla ...

  10. Unity学习之路——主要类

    学习https://blog.csdn.net/VRunSoftYanlz/article/details/78881752 1.Component类gameObject:组件附加的游戏对象.组件总是 ...