第二天python3 set常用方法
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常用方法的更多相关文章
- python学习第二天-基本数据类型常用方法
1.直入主题 python中基本的数据类型有 数字(整形,长整形,浮点型,复数) 字符串 字节串:在介绍字符编码时介绍字节bytes类型 列表 元组 字典 集合 下面我们直接将以下面几个点进行学习 # ...
- python3字符串常用方法
整型和布尔值的转换: bin -- 十进制转二进制 int("1101",2) -- 二进制转十进制 十进制转二进制的算法 除2 取余,获取的所有余数从下往上进行计算 二进制转十进 ...
- (六)python3 字符串常用方法
字符串截取 >>>s = 'hello' >>>s[0:3] 'he' >>>s[:] #截取全部字符 'hello' 消除空格及特殊符号 ...
- ubuntu下python3及idle3的安装
一.使用以下命令检查自己的系统下是否有python3 python3 --version 如果出现类似“command not found",则说明你需要安装python3.如果能够出现py ...
- Python3基础-目录
Python3基础-目录(Tips:长期更新Python3目录) 第一章 初识Python3 1.1 Python3基础-前言 1.2 Python3基础-规范 第二章 Python3内置函数&a ...
- (五)Hibernate 操作对象
所有项目导入对应的hibernate的jar包.mysql的jar包和添加每次都需要用到的HibernateUtil.java 第一节:Hibernate 中四种对象状态 临时状态(transient ...
- libgdx学习记录19——图片动态打包PixmapPacker
libgdx中,opengl 1.x要求图片长宽必须为2的整次幂,一般有如下解决方法 1. 将opengl 1.x改为opengl 2.0.(libgdx 1.0版本后不支持1.x,当然不存在这个问题 ...
- Hibernate学习5—Hibernate操作对象2
第二节:Session 常用方法讲解 2)load和get()方法: 数据库中不存在与OID 对应的记录,Load()方法会抛出异常: load方法默认采用延迟加载,load出来的对象是一个代理类.开 ...
- 【转】有的共享软件赚了一百万美元,而为什么你没有?&&我的软件推广成功之路
有的共享软件赚了一百万美元,而为什么你没有? 转自:http://blog.csdn.net/wangjiwei2010/article/details/1267044 译:DreamGoal 原作: ...
随机推荐
- sklearn机器学习实战-简单线性回归
记录下学习使用sklearn,将使用sklearn实现机器学习大部分内容 基于scikit-learn机器学习(第2版)这本书,和scikit-learn中文社区 简单线性回归 首先,最简单的线性回归 ...
- Golang 的 `[]interface{}` 类型
Golang 的 []interface{} 类型 我其实不太喜欢使用 Go 语言的 interface{} 类型,一般情况下我宁愿多写几个函数:XxxInt, XxxFloat, XxxString ...
- 讨论两种Redis中Token的存储方式
摘要:本文讨论一个问题:存储token时,token与对应用户id谁来作为key? 问题起源问题起源于要给公司的后台管理系统添加权限管理,选用的是开源框架shiro,而原本系统上是采用token做了登 ...
- 好客租房53-context的使用
app组件要传递给child组件 该如何处理 更好的姿势 跨组件传递数据 Provider 用来提供数据 Consumer用来消费数据 1调用React.createContext() 创建provi ...
- JAVA - ArrayList是否会越界?
JAVA - ArrayList是否会越界? ArrayList并发add()可能出现数组下标越界异常. ArrayList是实现了基于动态数组的数据结构. LinkedList是基于链表的数据结构 ...
- ER图/模型转换为关系模型
ER图中的主要成分是实体类型和联系类型,转换规则就是如何把实体类型.联系类型转换成关系模式. 1. 二元联系转换 规则1.1(实体类型的转换):将每个实体类型转换成一个关系模式,实体的属性即为关系模式 ...
- 论文阅读 Real-Time Streaming Graph Embedding Through Local Actions 11
9 Real-Time Streaming Graph Embedding Through Local Actions 11 link:https://scholar.google.com.sg/sc ...
- 详解PHP如何实现斐波那契数列的简单实例
文章来自:有解网 http://www.youjieweb.com/original/index/articleId/64.html 使用场景: 面试 本文讲的是如何用php实现PHP实现斐波那契数列 ...
- alertmanager集群莫名发送resolve消息的问题探究
alertmanager集群莫名发送resolve消息的问题探究 术语 告警消息:指一条告警 告警恢复消息:指一条告警恢复 告警信息:指告警相关的内容,包括告警消息和告警恢复消息 问题描述 最近遇到了 ...
- 【微服务专题之】.Net6下集成消息队列上-RabbitMQ
微信公众号:趣编程ACE关注可了解更多的.NET日常实战开发技巧,如需源码 请公众号后台留言 源码;[如果觉得本公众号对您有帮助,欢迎关注] .Net中RabbitMQ的使用 [微服务专题之].N ...