2.5.1集合操作(代码片段)

kakarott kakarott     2022-12-25     126

关键词:

本节内容

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)


来自为知笔记(Wiz)






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... 查看详情