关键词:
本节内容
1,集合操作
2,练习题
一、 集合
- set类型
set数据类型:s =11,22,33 - 特点:
1,元素无序且唯一。
2,可以存放各种数据类型。
3,天生去重。 - 主要作用:1,去重 2,关系测试
数据:
list_1 = 1, 3, 4, 5, 6, 7, 9
list_1 = 2,6,0,66,22,8,4
1,构建方法
# 基于列表
list_1 = [1,4,5,7,3,6,7,9]
list_1 = set(list_1)
# 基于字符串
list_2 = set("hello")
print(list_1, list_2)
-----------------------------------
1, 3, 4, 5, 6, 7, 9 ‘l‘, ‘o‘, ‘h‘, ‘e‘
2,集合常用操作
s = set([3,5,9,10]) #创建一个数值集合
t = set("Hello") #创建一个唯一字符的集合
a = t | s # t 和 s的并集
b = t & s # t 和 s的交集
c = t – s # 求差集(项在t中,但不在s中)
d = t ^ s # 对称差集(项在t或s中,但不会同时出现在二者中)
# 基本操作:
t.add(‘x‘) # 添加一项
s.update([10,37,42]) # 在s中添加多项
# 使用remove()可以删除一项,不存在则报错:
t.remove(‘H‘)
# len(s)
set 的长度
# 测试 x 是否是 s 的成员
x in s
# 测试 x 是否不是 s 的成员
x not in s
# (子集)测试是否 s 中的每一个元素都在 t 中 ,返回bool型
s.issubset(t)
s <= t
# (父集)测试是否 t 中的每一个元素都在 s 中,返回bool型
s.issuperset(t)
s >= t
# 判断是否有交集,如果没有则返回true
s.isdisjoint(t)
# (并集)返回一个新的 set 包含 s 和 t 中的每一个元素
s.union(t)
s | t
# (交集)返回一个新的 set 包含 s 和 t 中的公共元素
s.intersection(t)
s & t
# (差集)返回一个新的 set 包含 s 中有但是 t 中没有的元素
s.difference(t)
s - t
# (对称差集)返回一个新的 set 包含 s 和 t 中不重复的元素
s.symmetric_difference(t)
s ^ t
# 返回 set “s”的一个浅复制。
s.copy()
# 删除集合中的一个元素,如果没有则什么也不做(比remove容错性好)。
s.discard(888)
二、 练习
练习:寻找差异
# 数据库中原有
old_dict =
"#1": ‘hostname‘:c1, ‘cpu_count‘: 2, ‘mem_capicity‘: 80 ,
"#2": ‘hostname‘:c1, ‘cpu_count‘: 2, ‘mem_capicity‘: 80
"#3": ‘hostname‘:c1, ‘cpu_count‘: 2, ‘mem_capicity‘: 80
# cmdb 新汇报的数据
new_dict =
"#1": ‘hostname‘:c1, ‘cpu_count‘: 2, ‘mem_capicity‘: 800 ,
"#3": ‘hostname‘:c1, ‘cpu_count‘: 2, ‘mem_capicity‘: 80
"#4": ‘hostname‘:c2, ‘cpu_count‘: 2, ‘mem_capicity‘: 80
1,需要删除主机:?
2,需要新建主机:?
3,需要更新主机:? 注意:无需考虑内部元素是否改变,只要原来存在,新汇报也存在,就是需要更新
# 思路:先找两个结合的交集,
# 遍历新字典的key,如果不在更新的字典中则认为是要新增的。
# 遍历就字典的key,如果不在更新的字段中则认为是要删除的。
old_set = set(old_dict.keys())
update_list = list(old_set.intersection(new_dict.keys()))
new_list = []
del_list = []
for i in new_dict.keys():
if i not in update_list:
new_list.append(i)
for i in old_dict.keys():
if i not in update_list:
del_list.append(i)
print(update_list,new_list,del_list)
java字符串stringstringbuilder与集合arraylist的“相爱相杀”(代码片段)
...方法2.5应用2.5.1常见操作2.5.2 StingBuilder和String相互转化3.集合 查看详情
uos操作系统-控制中心(代码片段)
UOS操作系统-控制中心目录前言1、账户类设置1.1账户设置1.1.1创建新账户1.1.2自动登录与无密码登录1.1.3删除账户1.2网络账户设置2、自定义类设置2.1显示设置2.1.2调节亮度2.1.3设置屏幕缩放2.1.4设置屏幕刷新率2.1.5改变屏幕方向2.2个... 查看详情
操作系统——内存管理:虚拟内存管理(代码片段)
2.虚拟内存管理2.1背景2.2请求调页2.3页面置换2.3.1基本页面置换2.3.2FIFO页面置换2.3.3最优页面置换2.3.4LRU页面置换2.3.5基于计数的页面置换2.4帧分配2.4.1帧的最小数2.4.2分配算法2.4.3全局分配与局部分配2.5系统抖动2.5.1系统抖动的原因... 查看详情
elasticsearch保姆级入门教程(代码片段)
...2.5.2IK分词器的扩展词词典2.5.2停用词词典2.6Mapping索引库操作2.6.1常见mapping属性2.6.2创建索引库2.6.3查看、删除、更新索引库2.7文档操作2.8Re 查看详情
mysql数据库的基础语法总结(代码片段)
MySql一.数据库,数据表的基本操作1.数据库的基本操作2.数据表的基本操作2.1数据库的数据类型2.1.1整数类型2.1.2浮点数类型和定点数类型2.1.3字符串类型2.1.4日期与时间类型2.2数据表的基本操作2.2.1创建一个数据表2.2.2查看数据表2.2.... 查看详情
线性表--链表基础(代码片段)
...定义1.2双向链表1.3循环链表 1.4静态链表二、链表的基本操作2.1链表的结构定义2.2建立一个线性链表2.3求线性表的长度2.4查找元素2.5插入元素2.5.1链表头部插入元素2.5.2链表尾部插入元素2.5.3链表中间插入元素2.6改变元素2.7删除元... 查看详情
codeforcesround#601(div.2)a-e(代码片段)
比赛链接A题意给两个数字\\(a,b\\),每次操作可以使\\(a\\)加上\\(+1,+2,+5,-1,-2,-5\\)中的一个数,求最少多少次操作可以将\\(a\\)变成\\(b\\)。题解知识点:贪心。可以贪心取,先\\(5\\)后\\(2\\)再\\(1\\)。一点小结论(可能是假的qwq):考... 查看详情
java基础语法(代码片段)
...符4.1.1运算符和表达式4.1.2算术运算符4.1.3字符的“+”操作4.1.4字符串的“+”操作4.2赋值运算符(应用)4.3自增自减运算符4.4关系运算符4 查看详情
基于stm32的智能小车app自学梳理(代码片段)
...牙扫描2.1、权限申请2.2、相关变量2.3、onCreate一些初始化操作2.3.1、位置权限2.3.2、控件初始化2.3.3、蓝牙初始化2.4、蓝牙回调函数2.4.1、高版本蓝牙回调24.2、低版本蓝牙回调函数2.5、点击扫描按钮执行操作2.5.1、点击事件2.5.2、扫... 查看详情
基于stm32的智能小车app自学梳理(代码片段)
...牙扫描2.1、权限申请2.2、相关变量2.3、onCreate一些初始化操作2.3.1、位置权限2.3.2、控件初始化2.3.3、蓝牙初始化2.4、蓝牙回调函数2.4.1、高版本蓝牙回调24.2、低版本蓝牙回调函数2.5、点击扫描按钮执行操作2.5.1、点击事件2.5.2、扫... 查看详情
基于stm32的智能小车app自学梳理(代码片段)
...牙扫描2.1、权限申请2.2、相关变量2.3、onCreate一些初始化操作2.3.1、位置权限2.3.2、控件初始化2.3.3、蓝牙初始化2.4、蓝牙回调函数2.4.1、高版本蓝牙回调24.2、低版本蓝牙回调函数2.5、点击扫描按钮执行操作2.5.1、点击事件2.5.2、扫... 查看详情
python核心编程总结(三引用与文件操作)(代码片段)
✍、脑图时刻三、引用与文件操作✍、脑图时刻1、引用1.1、了解引用1.2、引用当作实参1.3、可变和不可变类型2、函数加强2.1、递归2.2、lambda表达式2.3、lambda的参数形式2.3.1、无参数2.3.2、一个参数2.3.3、默认参数2.3.4、可变参数... 查看详情
常用排序算法总结(代码片段)
...而a=b,排序之后a可能会出现在b的后面内排序:所有排序操作都在内存中完成外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行时间复杂度:一个算法执行所耗费的时间。空间复杂度:... 查看详情
c++提高编程(代码片段)
...string容器3.1.1string基本概念3.1.2string构造函数3.1.3string赋值操作3.1.4string字符拼接3.1.5string查找和替换3.1.6string字符串比较3.1.7string字符存取3.1.8string插入和删除3.1.9string子串3.2vector容器3.2.1vector基本概念1.功能2.vector与普通数组区别3.... 查看详情
linux权限提升—定时任务环境变量权限配置不当数据库等提权(代码片段)
....1.创建执行脚本2.2.2.创建定时任务2.2.3.查看效果2.2.4.提权操作2.2.4.1.切换普通用户2.2.4.2.执行命令2.2.4.3.查看效果2.2.4.4.提权执行2.2.5.总结2.2.5.1.执行成功的2.2.5.2.执行未成功的2.3.权限配置不当提权2.3.1.查看定时任务2.3.2.查看脚本2.... 查看详情
phpphp数组操作集合(代码片段)
rabbitmqgo语言实现六种消息中间件模型(代码片段)
...在前面1.介绍1.1什么是MQ1.2什么是RabbitMQ1.3AMQP协议2.Go语言操作RabbitMQ2.1下载2.2引入驱动2.3HelloWorld模型2.3.1生产者2.3.2消费者2.3.3结果2.4WorkQueues模型2.4.1生产者2.4.2消费者2.4.3结果2.5Publish/Subscribe模型2.5.1生产者2.5.2消费者2.5.3结果2.6Rout... 查看详情
集成openldap与kerberos实现统一认证:基于sasl/gssapi深度集成(代码片段)
...映射Kerberos与OpenLDAP账号4.3基于saslauthd进行委托认证5.安装操作5.1安装客户端5.1.1安装客户端软件包5.1.2配置Kerberos5.1.3配置SSH5.1.4配置SASL/GSSAPI5.2安装服务器端5.2.1安装服务器端软件包5.2.2配置Kerberos5.2.3配置SSH5.2.4配置SASL/GSSAPI5.2.4.1Ke... 查看详情