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. KMP算法学习以及小结(好马不吃回头草系列)

    首先请允许我对KMP算法的三位创始人Knuth,Morris,Pratt致敬,这三位优秀的算法科学家发明的这种匹配模式可以大大避免重复遍历的情况,从而使得字符串的匹配的速度更快,效率更高. 首先引入对 ...

  2. linux篇-centos7搭建apache服务器(亲测可用)

    1安装apache yum install httpd httpd-devel -y 2开启服务器 systemctl start httpd.service 3开机自启 systemctl enab ...

  3. linux篇-linux LAMP yum版安装

    LAMP(linux.apache.mysql.php),是四个套件的合成,简单讲就是要把php运行在linux上,需要依赖apache和mysql数据库. 1 准备好一个linux系统(centos ...

  4. CentOS7 安装高版本gcc, g++, gfortran等工具

    SCL(Software Collections)是一个CentOS/RHEL Linux平台的软件多版本共存解决方案,为用户提供一种方便.安全地安装和使用应用程序和运行时环境的多个版本的方式. De ...

  5. python文件操作拓展与认识函数

    目录 文件内光标的移动(了解即可) 前言 控制光标移动seek()方法 文件的修改 函数 语法结构 简单的使用 作业 答案 文件内光标的移动(了解即可) 前言 在文件的内置方法中,read()方法是可 ...

  6. 安装Squid到CentOS(YUM)

    运行环境 系统版本:CentOS Linux release 7.3.1611 (Core) 软件版本:无 硬件要求:无 安装过程 1.关闭防火墙和SeLinux [root@localhost ~] ...

  7. 向sqlserver 数据库插入emoji 表情包

    1.emoji 属于特殊字符 所以我们必须使用utf-8 的编码格式进行保存  不过好在sqlserver 默认支持utf-8 2.将需要存储emoji的字段必须设置为nvarchar 类型  因为v ...

  8. python常用标准库(时间模块 time和datetime)

    常用的标准库 time时间模块 import time time -- 获取本地时间戳 时间戳又被称之为是Unix时间戳,原本是在Unix系统中的计时工具. 它的含义是从1970年1月1日(UTC/G ...

  9. hdu多校题解

    hdu2020多校-1 J Math is Simple 给定 \(n\) ,求 \[\sum\limits_{1\le a<b\le n \\ gcd(a,b)=1 \\ a+b\ge n} ...

  10. CentOS 8.0与CentOS7.0 防火墙端口设置

    一,开放端口号 firewall-cmd --zone=public --add-port=8080/tcp --permanent  #开启8080端口 firewall-cmd --zone=pu ...