python集合set相关操作
定义:
1.不同元素组成
2.无序
3.集合中的元素必须是不可变类型
创建集合
|
1
|
s = {1,2,3,4,5,6,7,8} |
1.定义可变集合
|
1
2
3
|
>>> set_test = set('hello')>>> set_test{'h', 'l', 'e', 'o'} |
2.定义不可变集合
|
1
2
3
4
5
6
|
>>> set_test = set('hello')>>> set_test{'h', 'l', 'e', 'o'} # 由此可见集合中的元素不可重复,都是不同的>>> n_set_test = frozenset(set_test)>>> n_set_testfrozenset({'h', 'l', 'e', 'o'}) |
集合运算
集合之间也可进行数学集合运算(例如:并集、交集等),可用相应的操作符或方法来实现。
子集
子集,为某个集合中一部分的集合,故亦称部分集合。
使用操作符 < 执行子集操作,同样地,也可使用方法 issubset() 完成。
|
1
2
3
4
5
6
7
8
9
|
>>> A = set('abcd')>>> B = set('cdef')>>> C = set("ab")>>> C < ATrue # C 是 A 的子集>>> C < BFalse>>> C.issubset(A)True |
并集
一组集合的并集是这些集合的所有元素构成的集合,而不包含其他元素。
使用操作符 | 执行并集操作,同样地,也可使用方法 union() 完成。
|
1
2
3
4
|
>>> A | B{'c', 'b', 'f', 'd', 'e', 'a'}>>> A.union(B){'c', 'b', 'f', 'd', 'e', 'a'} |
交集
两个集合 A 和 B 的交集是含有所有既属于 A 又属于 B 的元素,而没有其他元素的集合。
使用 & 操作符执行交集操作,同样地,也可使用方法 intersection() 完成。
|
1
2
3
4
|
>>> A & B{'c', 'd'}>>> A.intersection(B){'c', 'd'} |
差集
A 与 B 的差集是所有属于 A 且不属于 B 的元素构成的集合
使用操作符 - 执行差集操作,同样地,也可使用方法 difference() 完成。
|
1
2
3
4
|
>>> A - B{'b', 'a'}>>> A.difference(B){'b', 'a'} |
对称差
两个集合的对称差是只属于其中一个集合,而不属于另一个集合的元素组成的集合。
使用 ^ 操作符执行差集操作,同样地,也可使用方法 symmetric_difference() 完成。
|
1
2
3
4
|
>>> A ^ B{'b', 'f', 'e', 'a'}>>> A.symmetric_difference(B){'b', 'f', 'e', 'a'} |
集合方法
1.add 向集合中添加元素
|
1
2
3
4
|
>>> s = {1, 2, 3, 4, 5, 6}>>> s.add("s")>>> s{1, 2, 3, 4, 5, 6, 's'} |
2.clear 清空集合
|
1
2
3
4
|
>>> s = {1, 2, 3, 4, 5, 6}>>> s.clear()>>> sset() |
3.copy 返回集合的浅拷贝
|
1
2
3
4
|
>>> s = {1, 2, 3, 4, 5, 6}>>> new_s = s.copy()>>> new_s{1, 2, 3, 4, 5, 6} |
4.pop 删除并返回任意的集合元素(如果集合为空,会引发 KeyError)
|
1
2
3
4
5
|
>>> s = {1, 2, 3, 4, 5, 6}>>> s.pop() # pop删除时是无序的随机删除1>>> s{2, 3, 4, 5, 6} |
5.remove 删除集合中的一个元素(如果元素不存在,会引发 KeyError)
|
1
2
3
4
|
>>> s = {1, 2, 3, 4, 5, 6}>>> s.remove(3)>>> s{1, 2, 4, 5, 6} |
6.discard 删除集合中的一个元素(如果元素不存在,则不执行任何操作)
|
1
2
3
4
|
>>> s = {1, 2, 3, 4, 5, 6}>>> s.discard("sb")>>> s{1, 2, 3, 4, 5, 6} |
7.intersection 将两个集合的交集作为一个新集合返回
|
1
2
3
4
5
6
|
>>> s = {1, 2, 3, 4, 5, 6}>>> s2 = {3, 4, 5, 6, 7, 8}>>> s.intersection(s2){3, 4, 5, 6}>>> s&s2 # 可以达到相同的效果{3, 4, 5, 6} |
8.union 将集合的并集作为一个新集合返回
|
1
2
3
4
5
6
|
>>> s = {1, 2, 3, 4, 5, 6}>>> s2 = {3, 4, 5, 6, 7, 8}>>> print(s.union(s2)){1, 2, 3, 4, 5, 6, 7, 8}>>> print(s|s2) # 用 | 可以达到相同效果{1, 2, 3, 4, 5, 6, 7, 8} |
9.difference 将两个或多个集合的差集作为一个新集合返回
|
1
2
3
4
5
6
7
8
9
10
|
>>> s = {1, 2, 3, 4, 5, 6}>>> s2 = {3, 4, 5, 6, 7, 8}>>> print("差集:",s.difference(s2)) # 去除s和s2中相同元素,删除s2 保留s中剩余元素差集: {1, 2}>>> print("差集:",s2.difference(s)) # 去除s和s2中相同元素,删除s2 保留s2中剩余元素<br>差集: {8, 7}>>> print("差集:",s - s2) # 符号 - 可以达到相同结果差集: {1, 2}>>> print("差集:",s2 - s) # 符号 - 可以达到相同结果差集: {8, 7} |
10. symmetric_difference 将两个集合的对称差作为一个新集合返回(两个集合合并删除相同部分,其余保留)
|
1
2
3
4
|
>>> s = {1, 2, 3, 4, 5, 6}>>> s2 = {3, 4, 5, 6, 7, 8}>>> s.symmetric_difference(s2){1, 2, 7, 8} |
11.update 用自己和另一个的并集来更新这个集合
|
1
2
3
4
5
6
7
|
>>> s = {'p', 'y'}>>> s.update(['t', 'h', 'o', 'n']) # 添加多个元素>>> s{'p', 't', 'o', 'y', 'h', 'n'}>>> s.update(['H', 'e'], {'l', 'l', 'o'}) # 添加列表和集合>>> s{'p', 'H', 't', 'l', 'o', 'y', 'e', 'h', 'n'} |
12.intersection_update() 用自己和另一个的交集来更新这个集合
|
1
2
3
4
5
|
>>> s = {'a', 'b', 'c', 'd', 'q'}>>> s2 = {'c', 'd', 'e', 'f'}>>> s.intersection_update(s2) # 相当于s = s - s2>>> s{'c', 'd'} |
13.isdisjoint() 如果两个集合有一个空交集,返回 True
|
1
2
3
4
5
6
7
|
>>> s = {1, 2}>>> s1 = {3, 4}>>> s2 = {2, 3}>>> s.isdisjoint(s1) True # s 和 s1 两个集合的交集为空返回 True>>> s.isdisjoint(s2)False # s 和 s2 两个集合的交集为 2 不是空 所有返回False |
14.issubset() 如果另一个集合包含这个集合,返回 True
|
1
2
3
4
5
6
7
|
>>> s = {1, 2, 3}>>> s1 = {1, 2, 3, 4}>>> s2 = {2, 3}>>> s.issubset(s1)True # 因为 s1 集合 包含 s 集合>>> s.issubset(s2)False # s2 集合 不包含 s 集合 |
15.issuperset() 如果这个集合包含另一个集合,返回 True
|
1
2
3
4
5
6
7
|
>>> s = {1, 2, 3}>>> s1 = {1, 2, 3, 4}>>> s2 = {2, 3}>>> s.issuperset(s1)False # s 集合不包含 s1 集合>>> s.issuperset(s2)True # s 集合包含 s2 集合 |
16.difference_update() 从这个集合中删除另一个集合的所有元素
|
1
2
3
4
5
6
7
8
9
|
>>> s = {1, 2, 3}>>> s1 = {1, 2, 3, 4}>>> s2 = {2, 3}>>> s.difference_update(s2)>>> s{1} # s2中的2,3 s集合中也有2,3 所以保留1>>> s1.difference_update(s2)>>> s1{1, 4} |
17.symmetric_difference_update() 用自己和另一个的对称差来更新这个集合
|
1
2
3
4
5
6
7
8
9
10
11
12
|
>>> s = {1, 2, 3}>>> s1 = {1, 2, 3, 4}>>> s2 = {2, 3}>>> s1.symmetric_difference_update(s)>>> s1{4}>>> s1.symmetric_difference_update(s2)>>> s1{2, 3, 4}>>> s.symmetric_difference_update(s2)>>> s{1} |
集合与内置函数
下述内置函数通常作用于集合,来执行不同的任务。
| 函数 | 描述 |
| all() | 如果集合中的所有元素都是 True(或者集合为空),则返回 True。 |
| any() | 如果集合中的所有元素都是 True,则返回 True;如果集合为空,则返回 False。 |
| enumerate() | 返回一个枚举对象,其中包含了集合中所有元素的索引和值(配对)。 |
| len() | 返回集合的长度(元素个数) |
| max() | 返回集合中的最大项 |
| min() | 返回集合中的最小项 |
| sorted() | 从集合中的元素返回新的排序列表(不排序集合本身) |
| sum() | 返回集合的所有元素之和 |
python集合set相关操作的更多相关文章
- Python字符串的相关操作
1.大小写转换 判断字符串 s.isalnum() #所有字符都是数字或者字母 s.isalpha() #所有字符都是字母 s.isdigit() #所有字符都是数字 s.islower() #所有字 ...
- Python集合类型的操作与应用
Python集合类型的操作与应用 一.Python集合类型 Python中的集合类型是一个包含0个或多个数据项的无序的.不重复的数据组合,其中,元素类型只能是固定数据类型,如整数.浮点数.字符串.元组 ...
- redis对set(无序集合)的相关操作
redis对set类型(无序集合)操作的相关命令以及如何在python使用这些命令 redis对set类型操作的命令: 命令 语法 概述 返回值 Redis Sadd 命令 sadd key memb ...
- Selenium2+python自动化40-cookie相关操作
前言 虽然cookie相关操作在平常ui自动化中用得少,偶尔也会用到,比如登录有图形验证码,可以通过绕过验证码方式,添加cookie方法登录. 登录后换账号登录时候,也可作为后置条件去删除cookie ...
- python文件的相关操作
python 目录 python 1.python文件的介绍 使用文件的目的 Python文件的类型主要有两种:文本文件和二进制文件. 操作文件的流程主要有三步:打开-操作-关闭操作. 2.文件的打开 ...
- 『无为则无心』Python序列 — 22、Python集合及其常用操作
目录 1.Python集合特点 2.Python集合的创建 3.操作集合常用API (1)增加数据 @1.add()方法 @2.update()方法 (2)删除数据 @1.remove()方法 @2. ...
- Selenium2+python自动化40-cookie相关操作【转载】
前言 虽然cookie相关操作在平常ui自动化中用得少,偶尔也会用到,比如登录有图形验证码,可以通过绕过验证码方式,添加cookie方法登录. 登录后换账号登录时候,也可作为后置条件去删除cookie ...
- Python字典及相关操作(内含例题)
Python字典类型 今天将会介绍一种在python中十分常见的组合数据类型——字典 通过一些实例来理解字典中的常规操作 什么是字典类型? 列表中查找是通过整数的索引(元素在列表中的序号)来实现查找功 ...
- Python集合的常用操作
字典常用的就是,他的去重. set集合是python的一个基本数据类型. set中的元素是不重复的.⽆无序的.⾥面的元素必须是可hash的(int, str, tuple,bool). 我们可以这样来 ...
随机推荐
- Nhibernate 使用 (一)
一:介绍 NHibernate 是一个基于.Net 的针对关系型数据库的对象持久化类库.Nhibernate 来源于非常优秀的基于Java的Hibernate 关系型持久化工具.NHibernate ...
- Intellij Idea调试java文件时 怎么跳过class文件?
Intellij Idea调试时 java文件时,遇到class文件时它也会反编译该文件,并跳入该class文件内一条条语句执行.这让我烦透了,怎么跳过class文件,继续调试啊? SETTINGS- ...
- Java Spring Boot VS .NetCore (十一)自定义标签 Java Tag Freemarker VS .NetCore Tag TagHelper
Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...
- 期货大赛项目|六,iCheck漂亮的复选框
废话不多说,直接上图 对,还是上篇文章的图,这次我们不研究datatables,而是看这个复选框,比平常的复选框漂亮太多 看看我是如何实现的吧 插件叫iCheck 用法也简单 引入js和css $(& ...
- labview出现系统998错误
1.环境:xp,labview2015, 2.经过:初始状态正常,系统需要运行2016的打包的程序,运行不了,后下载了一个2016打包后的程序,点击安装,未提示异常.桌面添加了快捷方式,点击快捷方式, ...
- vue中mint-ui的filed的与blur事件结合实现检查用户输入是否正确
标题mint-ui的filed与blur事件验证用户输入格式是否正确说明:本人前端菜鸟,只是想借个地方做个笔记,为了以后查阅时比较方便.如有大神有什么建议的地方,欢迎提出来. 1.不得不说,mint- ...
- Nginx模块 ngx_http_limit_req_module 限制请求速率
The ngx_http_limit_req_module module (0.7.21) is used to limit the request processing rate per a def ...
- OpenStack共享组件
一.云计算的前世今生 1.物理机架构,应用部署和运行在物理机上 2.虚拟化架构,物理机上运行若干虚拟机,应用系统直接部署到虚拟机上 3.云计算架构,虚拟化提高了单台物理机的资源使用率 二.Open ...
- Windows的四类消息
Windows的三类消息1.标准消息宏名称 对映消息 消息处理函数(名称已由系统预设)ON_WM_CHAR WM_CAHR OnCharON_WM_CLOSE WM_CLOSE OnCloseON_W ...
- MyBatis入门(二)接口式编程
在 MyBatis入门(一) 的基础之上编写接口 将接口和Mapper文件进行绑定,会为接口创建一个代理对象,代理对象去执行增删改查 (1)编写接口 public interface EmpDao ...