set

set的元素要求
set的元素必须可hash,目前学过的不可hash的类型有list、set;

1、元素不可以被索引

  可变的、无序的、不重复的元素的集合

2、set可以被迭代

set增加

  add(elem)

   增加一个元素到set中,如果元素存在则什么都不做;

  update(*others)

   合并其他元素到set集合中来;参数others必须是可迭代对象;就地修改;可以写多个可迭代对象;
set删除

  remove(elem)

    如果set中有删除对象,则删除,如果没有,则抛出keyError;
  discard(elem)

    元素存在则删除,不存在则什么都不做;

  pop()

    移除并返回任意元素,因为是无序的,所以是任意元素;

   空集合返回KeyError;

  clear()

    移除所有元素;

set修改、查询

  set要么删除要么假如新的元素;

  非线性结果,无法被索引,可以迭代所有元素;

成员运算符

  

  通过测试发现,set的处理速度明显比list要高很多;由于set中没有重复数据,则set会通过hash的方式将数据计算出一个唯一hash值;所以处理会比较快;

set和线性结构
线性结构的查询时间复杂度是O(n),即随着数据规模的增大而增加耗时;

set、dict等结构,内部使用hash值作为key,时间复杂度可以做到O(1);查询时间和数据规模无关;

可hash类型

  数值型int、float、complex

  布尔型True、False

  字符串string、bytes

  tuple

  None

  以上都是不可变类型,成为hash类型;

set的元素必须是可hash的;

集合运算

并集

  union(*others) 返回和多个集合合并后的新的集合

  |运算符重载;等同于union;

  update(*others) 和多个集合合并,就地修改;

  |= 等同于update

交集

  intersection(*others) 返回多个集合的交集

  & 等同于intersection

  intersection_update(*others) 获取和多个集合的交集,并就地修改;

  &= 等同于intersection_update

差集

  differece(*others) 返回和多个集合的差集

  - 等同于difference

  difference_update(*others) 获取和多个集合的差集并就地修改;

  -= 等同于difference_update

对称差集

  集合A和B,由所有不属于A和B的交集元素组成的集合,记作(A-B)U(B-A)

  symmetric_differece(other) 返回和另一个集合的差集

  ^ 等同于symmetric_differece

  symmetric_differece_update(other) 获取和另一个集合的差集并就地修改;

  ^= 等同于symmetric_differece_update

issubset(other)、<=  判断当前集合是否是另一个集合的子集

set1 < set2 判断set1是不是set2的真子集

issuperset(other)、>=  判断当前集合是否是other的超集

set1 > set2 判断set1是否是set的真超集

isdisjoint(other)  判断当前集合和另一个集合有没有交集,没有交集,返回True;

第二天python3 set常用方法的更多相关文章

  1. python学习第二天-基本数据类型常用方法

    1.直入主题 python中基本的数据类型有 数字(整形,长整形,浮点型,复数) 字符串 字节串:在介绍字符编码时介绍字节bytes类型 列表 元组 字典 集合 下面我们直接将以下面几个点进行学习 # ...

  2. python3字符串常用方法

    整型和布尔值的转换: bin -- 十进制转二进制 int("1101",2) -- 二进制转十进制 十进制转二进制的算法 除2 取余,获取的所有余数从下往上进行计算 二进制转十进 ...

  3. (六)python3 字符串常用方法

    字符串截取  >>>s = 'hello' >>>s[0:3] 'he' >>>s[:] #截取全部字符 'hello' 消除空格及特殊符号   ...

  4. ubuntu下python3及idle3的安装

    一.使用以下命令检查自己的系统下是否有python3 python3 --version 如果出现类似“command not found",则说明你需要安装python3.如果能够出现py ...

  5. Python3基础-目录

    Python3基础-目录(Tips:长期更新Python3目录) 第一章 初识Python3  1.1 Python3基础-前言  1.2 Python3基础-规范 第二章 Python3内置函数&a ...

  6. (五)Hibernate 操作对象

    所有项目导入对应的hibernate的jar包.mysql的jar包和添加每次都需要用到的HibernateUtil.java 第一节:Hibernate 中四种对象状态 临时状态(transient ...

  7. libgdx学习记录19——图片动态打包PixmapPacker

    libgdx中,opengl 1.x要求图片长宽必须为2的整次幂,一般有如下解决方法 1. 将opengl 1.x改为opengl 2.0.(libgdx 1.0版本后不支持1.x,当然不存在这个问题 ...

  8. Hibernate学习5—Hibernate操作对象2

    第二节:Session 常用方法讲解 2)load和get()方法: 数据库中不存在与OID 对应的记录,Load()方法会抛出异常: load方法默认采用延迟加载,load出来的对象是一个代理类.开 ...

  9. 【转】有的共享软件赚了一百万美元,而为什么你没有?&&我的软件推广成功之路

    有的共享软件赚了一百万美元,而为什么你没有? 转自:http://blog.csdn.net/wangjiwei2010/article/details/1267044 译:DreamGoal 原作: ...

随机推荐

  1. drf-Serializers

    What is serializers? serializers主要作用是将原生的Python数据类型(如 model querysets )转换为web中通用的JSON,XML或其他内容类型. DR ...

  2. 版本控制之git

    1.Git的介绍 Git 是一个开源的分布式版本控制软件,用以有效.高速的处理从很小到非常大的项目版本管理. Git 最初是由Linus Torvalds设计开发的,用于管理Linux内核开发.Git ...

  3. 在博客文章中使用mermaid 定义流程图,序列图,甘特图

    概述 Mermaid(美人鱼)是一套markdown语法规范,用来在markdown文档中定义图形,包括流程图.序列图.甘特图等等. 它的官方网站是 https://mermaid-js.github ...

  4. 现有教学数据库JX_DB,作业

    现有教学数据库JX_DB,数据库有以下三个基本表: 学生表student,它由学号sno.姓名sname.性别sex.出生日期Bdate.所在系dept五个属性构成.其中,学号不能为空,值是唯一的: ...

  5. 揭秘华为云GaussDB(for Influx):数据直方图

    摘要:本文带您了解直方图在不同产品中的实现,以及GaussDB(for Influx)中直方图的使用方法. 本文分享自华为云社区<华为云GaussDB(for Influx)揭秘第九期:最佳实践 ...

  6. 693. Binary Number with Alternating Bits - LeetCode

    Question 693. Binary Number with Alternating Bits Solution 思路:输入一个整数,它的二进制01交替出现,遍历其二进制字符串,下一个与上一个不等 ...

  7. 戏说领域驱动设计(廿七)——Saga设计模型

    上一节我们讲解了常用的事务,也提及了Saga,这是在分布式环境下被经常使用的一种处理复杂业务和分布式事务的设计模式.本章我们的主要目标是编写一个简单版本的Saga处理器,不同于Seata框架中那种可独 ...

  8. Mac 睡眠唤醒 不睡眠 问题

    问题 之前一直有夜晚睡觉前电脑关机的习惯,主要是想着电脑也跟人一样️要休息.然后最近想着自己 Mac 干脆每天睡眠算了,省得每天开关机麻烦,所以就最近这段时间每次夜晚睡觉前主动去点了电脑的 「Slee ...

  9. atcoder abc 244

    atcoder abc 244 D - swap hats 给定两个 R,G,B 的排列 进行刚好 \(10^{18}\) 次操作,每一次选择两个交换 问最后能否相同 刚好 \(10^{18}\) 次 ...

  10. QT 基于QScrollArea的界面嵌套移动

    在实际的应用场景中,经常会出现软件界面战场图大于实际窗体大小,利用QScrollArea可以为widget窗体添加滚动条,可以实现小窗体利用滚动条显示大界面需求.实现如下: QT创建一个qWidget ...