Python开发【第十篇】集合
集合的运算
| & | 交集 |
|---|---|
| | | 并集 |
| - | 补集 |
| ^ | 对称补集 |
| < | 子集 |
| > | 超集 |
例子:
生成两个集合的并集
s1 = {1,2,3}
s2 = {2,3,4}
s3 = s1|s2
#结果{1,2,3,4}
生成两个集合的交集
s1 = {1,2,3}
s2 = {2,3,4}
s3 = s1&s2
#结果{2,3}
生成两个集合的补集
s1 = {1,2,3}
s2 = {2,3,4}
s3 = s1 - s2
#结果生成s1但不属于s2的所有元素的集合
{1}
生成两个集合的对称补集
s1 = {1,2,3}
s2 = {2,3,4}
s3 = s1 ^ s2
#结果{1,4}
判断一个集合是另一个集合的子集
s1 = {1,2,3}
s2 = {2,3}
s2 < s1
#结果True
s1 > s2
#结果True
集合比较没有比较谁比谁大,而是比较的是谁包含谁
集合是不能比较大小的
in和not in 也同样适用于集合
集合和字典的有点:
in 和not in 运算速度比较快
能用于集合的内建函数
| len(x) |
|---|
| max(x) |
| min(x) |
| sum(x) |
| any(x) |
| all(x) |
Python3 集合的方法
| 方法 | 意义 |
|---|---|
| S.add(e) | 在集合中添加一个新的元素e;如果元素已经存在,则不添加 |
| S.remove(e) | 从集合中删除一个元素,如果元素不存在于集合中,则会产生一个KeyError错误 |
| S.discard(e) | 从集合S中移除一个元素e,在元素e不存在时什么都不做; |
| S.clear() | 清空集合内的所有元素 |
| S.copy() | 将集合进行一次浅拷贝 |
| S.pop() | 从集合S中删除一个随机元素;如果此集合为空,则引发KeyError异常 |
| S.update(s2) | 等同于 S \ |
| S.difference(s2) | S - s2 补集运算,返回存在于在S中,但不在s2中的所有元素的集合 |
| S.difference_update(s2) | 等同于 S -= s2 |
| S.intersection(s2) | 等同于 S & s2 |
| S.intersection_update(s2) | 等同于S &= s2 |
| S.isdisjoint(s2) | 如果S与s2交集为空返回True,非空则返回False |
| S.issubset(s2) | 如果S与s2交集为非空返回True,空则返回False |
| S.issuperset(...) | 如果S为s2的子集返回True,否则返回False |
| S.symmetric_difference(s2) | 返回对称补集, 等同于 S ^ s2 |
| S.symmetric_difference_update(s2) | 等同于 S ^= s2, 用 S 与 s2 的对称补集更新 S |
| S.union(s2) | 生成 S 与 s2的全集, 等同于 S |
集合是可迭代对象
集合推导式
语法:
{表达式 for 临时变量 in 可迭代对象 [if真值表达式]}
#[]代表其中的内容可以省略
L = [1,2,3,4,5]
S = {i**2 for i in L}
print(S)
{1,3,4,16,25}
集合推导式的嵌套等同于列表推导式的嵌套
Python3推导式就三种:
- 列表推导式
- 字典推导式
- 集合推导式
Python3中容器类都可以用for循环来遍历
固定集合
固定集合是不可变的,无序的,含有唯一元素的集合
作用:固定集合可以作为字典的键,还可以作为集合的值
固定集合的构造函数
#创建一个空的固定集合
frozenset()
#用可迭代对象创建一个新的固定集合
frozenset(iterable)
f = frozenset()
f2 = frozenset('hello')
固定集合的运算
| & | 交集 |
|---|---|
| | | 并集 |
| - | 补集 |
| ^ | 对称补集 |
| in | 在不在 |
| not in | 不在 |
| < | |
| <= | |
| > | |
| >= | |
| == | |
| != |
固定集合的方法
`
| s.add(x) | 添加 |
|---|---|
| s.remove(x) | 删除 |
Python开发【第十篇】集合的更多相关文章
- Python开发【第二篇】:初识Python
Python开发[第二篇]:初识Python Python简介 Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏 ...
- Python开发【第一篇】:目录
本系列博文包含 Python基础.前端开发.Web框架.缓存以及队列等,希望可以给正在学习编程的童鞋提供一点帮助!!! Python开发[第一篇]:目录 Python开发[第二篇]:初识Python ...
- Python 学习 第十篇 CMDB用户权限管理
Python 学习 第十篇 CMDB用户权限管理 2016-10-10 16:29:17 标签: python 版权声明:原创作品,谢绝转载!否则将追究法律责任. 不管是什么系统,用户权限都是至关重要 ...
- Python开发【第一篇】:目录
本系列博文包含Python基础.前端开发.Web框架.缓存以及队列等,希望可以给正在学习Python编程的朋友们提供一点帮助! .Python开发[第一篇]:目录 .Python开发[第二篇]:初始P ...
- Python开发【第九篇】:HTML (二)
python[第十四篇]HTML基础 时间:2016-08-08 20:57:27 阅读:49 评论:0 收藏:0 [点我收藏+] 标签: 什么是HTML? H ...
- Python开发【第一篇】基础题目二
1 列表题 l1 = [11, 22, 33] l2 = [22, 33, 44] # a. 获取l1 中有,l2中没有的元素 for i in l1: if i not in l2: # b. 获取 ...
- [Python笔记]第十篇:模块续
requests Python标准库中提供了:urllib等模块以供Http请求,但是,它的 API 太渣了.它是为另一个时代.另一个互联网所创建的.它需要巨量的工作,甚至包括各种方法覆盖,来完成最简 ...
- 跟着老男孩教育学Python开发【第一篇】:初识Python
Python简介 Python前世今生 Python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解 ...
- Python开发【第二篇】:Python基础知识
Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...
- Python开发【第一篇】:初识Python
初识python 一.python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解 ...
随机推荐
- 松软科技课堂:SQL之NOTNULL约束
SQL NOT NULL 约束 NOT NULL 约束强制列不接受 NULL 值. NOT NULL 约束强制字段始终包含值.这意味着,如果不向字段添加值,就无法插入新记录或者更新记录. 下面的 SQ ...
- 分别设计点类Point和圆类Circle,点类有两个私有数据纵坐标和横坐标;圆类有也两个私有数据圆心和半径,其中圆心是一个点类对象;要求如下所述: (1) 通过构造方法初始化数据成员,数据成员的初始化通过构造方法的参数传递;(2) 分别编写点和圆的输出函数,其中圆的输出包括圆心和半径的输出;点的输出x,y;
题目相对简单: package naizi; public class Circle { //私有成员及构造方法 private Point center; private int r; Circle ...
- Java连载33-对象的创建和使用、内存分析
一.创建一个学生类 每个学生都有学号信息,但是每一个学生的学号都是不同的,所以要访问这个学号必须先创建对象,通过对象去访问学号信息,学号信息不能直接通过“类”去访问,所以这种成员变量又被称为“实例变量 ...
- Redis会遇到的问题以及解决方案
1.缓存雪崩 发生场景:当Redis服务器重启或者大量缓存在同一时期失效时,此时大量的流量会全部冲击到数据库上面,数据库有可能会因为承受不住而宕机 解决办法: 1)随机均匀设置失效时间 2)设置过期标 ...
- C++虚函数表和对象存储
C++虚函数表和对象存储 C++中的虚函数实现了多态的机制,也就是用父类型指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数,这种技术可以让父类的指针有"多种形态",这 ...
- Jmete压力测试、并发测试的简单方法
我们的需求场景如下: 服务器硬件:(只有一台) 系统:CentOS 7 WebServer:Tomcat 7.0 Jdk:1.8 CPU:8核 2.9GHz两个 内存:16g 报名应用系统:只需要向外 ...
- 基于操作系统原理的Linux 的用户管理
一.实验目的 1.掌握为root用户修改密码的方法. 2.掌握创建新用户的方法. 3.掌握用户组的管理方法. 4.掌握为用户授权的方法. 二.实验内容 1.Linux的用户管理 (1)创建新用户创建新 ...
- Airtest之web自动化(一)
Airtest之web自动化(一) [此文档有许多涉及到gif动图的地方,请全屏观看] 了解Airtest: 简介: Airtest是由网易团队开发的一款自动化框架,前期运用与游戏测试(通过截图识 ...
- Maven 梳理 - 核心概念
Maven坐标 依赖配置 依赖范围 依赖范围scope用来控制依赖和编译,测试,运行的classpath的关系. 主要的是三种依赖关系如下: 1.compile: 默认编译依赖范围.对于编译,测试,运 ...
- 如何解决myeclipse2014突然无法打开的问题
今天突然发现我的myeclipse2014打开不了,昨晚还好好的,上网找了一下没有找到解决方法,于是新建一个工作区间Workspace Test,再打开File->Switch WorkSpac ...