当前位置: 首页 > article >正文

Python-11(集合)

与字典类似,集合最大的特点就是唯一性。集合中所有的元素都应该是独一无二的,并且也是无序的。

创建集合

使用花括号

set = {"python","Java"}
print(type(set))

使用集合推导式

set = {s for s in "python"}
print(set)
print(type(set))

体现出集合无序的特征。

使用类型构造器set

set = set("python")
print(set)
print(type(set))

注意:由于集合是无序的,所以不能使用下标索引的方式来对其进行访问。只能使用in或not in来判断某个元素是否在集合中。

去重(唯一性)

可以将有重复元素的列表传入集合,会自动去除重复的元素。

set = set([1,1,2,3,4])
print(set)

集合的内置函数

copy()方法

使用copy方法,实现集合的浅拷贝。

isdisjoint(可迭代对象)方法

使用isdisjoint(可迭代对象)方法,用来判断两个集合是否相关(存在相同元素),False代表有相同元素,True则代表没有相同元素。

s = set("1234")
print(s.isdisjoint(set("3214")))

issubset()方法

使用该方法可以判断该集合是否是另外的集合的子集。

s = set("python")
print(s.issubset("www.python.com"))

issuperset()方法

使用该方法可以判断该集合是否是另外的集合的超集。

s = set("www.python.com")
print(s.issuperset("python"))

union()方法

使用该方法可以构成该集合和另外的集合的并集。

s = set("www.python.com")
print(s.union("JAVA"))

 intersection()方法

使用该方法可以找出该集合和另外的集合的交集。

s = set("www.python.com")
print(s.intersection("JAVApy"))

difference()方法

使用该方法可以找出该集合与另外的集合的差集。

s = set("python")
print(s.difference("JAVApy"))

注意:以上三个方法支持多参数。

symmetric_difference()方法

使用该方法可以求出该集合和另外的集合的对称差集。该方法不能多参数。

s = set("python")
print(s.symmetric_difference("JAVApy"))

运算符

<=:检测子集

<:真子集

>=:超集

>:真超集

|:并集

&:交集

-(减号):差集

^:对称差集

注意:使用运算符时,符号两边必须都是集合类型的数据。方法可以使用任何可迭代对象。

frozenset

python将集合划分为可变(set)和不可变(frozenset)两种对象。

若不是修改集合内容的方法可以适用于frozenset。

t = frozenset("python")

仅适用于set对象的方法(会对集合改变的方法)

update(*others)方法

该方法将使用others参数指定的值来更新集合。

注意:若方法中的参数是others,则说明该方法支持多个参数。;若参数是other,则只能存在一个参数。

s = set("python")
s.update([1,2],"45")
print(s)

intersection_update(*others)、difference_update(*others)和symmetric_difference_update(*others)

这三个方法分别是将交集、差集和对称差集进行更新。

s = set("python")
s.update([1,2],"45")
print(s)
s.intersection_update("python")
print(s)
s.difference_update("Php","Java")
print(s)
s.symmetric_difference_update("hello python")
print(s)

 

add()方法

该方法是将集合中加入输入。当参数是字符串时,该方法会将整个字符串作为一个元素插入到集合中,而不是迭代插入。

s = set("python")
s.add("45")
print(s)

remove(elem)和discard(elem)方法

这两个方法是从集合中删除元素。其区别是,如果指定的元素不存在remove方法会抛出异常,而discard方法则会静默处理。

s = set("python")
s.discard('j')
print(s)
s.remove('a')
print(s

pop()方法

该方法用于随机从集合中弹出一个元素。因为存储顺序是随机的,所以弹出也是随机的。

s = set("python")
print(s.pop())

clear()方法

该方法会直接将集合中的元素数据清空。

s = set("python")
print(s)
s.clear()
print(s)

可哈希

想要正确的创建集合和字典,要求字典的键还有集合的元素都必须是可以哈希的。如果一个对象是可哈希的,那么就要求它的哈希值必须在其整个程序的生命周期内保持不变。

hash(object)函数

通过该函数可以获取一个对象的哈希值。

print(hash(1))
print(hash(1.0))
print(hash(1.01))

求一个整数的哈希值,其哈希值永远等于它自身。如果两个对象的值是相等的,尽管是两个不同的对象,那么它们的哈希是也是相等的。

在python中大部分不可变的对象都是可哈希的,而可变对象则是不可哈希的。

print(hash("python"))
print(hash([1,2,3]))

因为集合是一个可变容器,而集合要求集合中的元素都是可哈希的,所以嵌套集合是不可行的。

x = {1,2,3}
y = {x,4,5}

如果我们非要使用嵌套集合,内层集合必须使用frozenset。

x = frozenset({1,2,3})
y = {x,4,5}
print(y)

相关文章:

Python-11(集合)

与字典类似&#xff0c;集合最大的特点就是唯一性。集合中所有的元素都应该是独一无二的&#xff0c;并且也是无序的。 创建集合 使用花括号 set {"python","Java"} print(type(set)) 使用集合推导式 set {s for s in "python"} print(set…...

钉钉开发之AI消息和卡片交互开发文档收集

AI消息和卡片交互开发文档 智能交互接口能力介绍 AI助理发消息&#xff08;主动直接发送模式 AI 助理发消息 - 主动发送模式 AI 助理发消息 - 回复消息模式 AI 助理发消息 - Webhook 回复消息模式 Stream 模式响应卡片回传请求事件 upload-media-files AI 助理发消息&a…...

JMeter 教程:正则表达式提取器提取 JSON 字段数据

目录 JMeter 教程&#xff1a;正则表达式提取器提取 JSON 字段数据【简单实用】 ✅ 目的说明 &#x1f4c4; 示例场景 &#x1f6e0;️ 操作步骤 第一步&#xff1a;发送 HTTP 请求 第二步&#xff1a;添加正则表达式提取器 第三步&#xff1a;使用提取变量 ✅ 正则表达…...

Opixs: Fluxim推出的全新显示仿真模拟软件

Opixs 是 Fluxim 最新研发的显示仿真模拟软件&#xff0c;旨在应对当今显示技术日益复杂的挑战。通过 Opixs&#xff0c;研究人员和工程师可以在制造前&#xff0c;设计并验证 新的像素架构&#xff0c;从而找出更功节能、色彩表现更优的布局方案。 Opixs 适用于学术研究和工业…...

[数据集]无人机视角检测分割数据集合集

数据集名称无人机海洋或河道水上监测检测数据集VOCYOLO格式2903张6类别无人机热红外视角人车检测数据集VOCYOLO格式2866张5类别无人机拍摄红外图像光伏板缺陷检测数据集VOCYOLO格式2723张9类别无人机视角搜索和救援失踪被困人员检测数据集VOCYOLO格式1976张6类别无人机视角垃圾…...

佰力博与您探讨PVDF薄膜极化特性及其影响因素

PVDF&#xff08;聚偏氟乙烯&#xff09;薄膜的极化是其压电性能形成的关键步骤&#xff0c;通过极化处理可以显著提高其压电系数和储能能力。极化过程涉及多种方法和条件&#xff0c;以下从不同角度详细说明PVDF薄膜的极化特性及其影响因素。 1、极化方法 热极化&#xff1a;…...

C++ std::find() 函数全解析

std::find()是C标准库中用于线性查找的基础算法&#xff0c;属于<algorithm>头文件&#xff0c;可应用于任何支持迭代器的容器。 一、函数原型与参数 template< class InputIt, class T > InputIt find( InputIt first, InputIt last, const T& value );​​…...

自动获取ip地址安全吗?如何自动获取ip地址

在数字化网络环境中&#xff0c;IP地址的获取方式直接影响设备连接的便捷性与安全性。自动获取IP地址&#xff08;通过DHCP协议&#xff09;虽简化了配置流程&#xff0c;但其安全性常引发用户疑虑。那么&#xff0c;自动获取IP地址安全吗&#xff1f;如何自动获取IP地址&#…...

STM32:深度解析RS-485总线与SP3485芯片

32个设备 知识点1【RS-485的简介】 RS-485是一种物理层差分总线标准&#xff0c;在串口的基础上演变而来&#xff1b; 两者虽然不在同一层次上直接对等&#xff0c;但在实际系统中&#xff0c;往往使用RS-485驱动差分总线&#xff0c;将USART转换为适合长距离、多点通信的物…...

亚马逊搜索代理: 终极指南

文章目录 前言一、为什么需要代理来搜索亚马逊二、如何选择正确的代理三、搜索亚马逊的最佳代理类型四、为亚马逊搜索设置代理五、常见挑战及克服方法六、亚马逊搜索的替代方法总结 前言 在没有代理的情况下搜索亚马逊会导致 IP 禁止、验证码和速度限制&#xff0c;从而使数据…...

QGraphicsView界面的坑(fitInView()函数没反应)

QGraphicsView本身是特别灵活的一种ui&#xff0c;能够自由响应各种动态操作。不过它最大的问题就是在加载好图像以后&#xff0c;将图像自适应贴合到界面大小的时候&#xff08;fitInView()函数&#xff09;没有反应。 这是因为fitInView函数在执行的时候&#xff0c;需要计算…...

【Python正则表达式终极指南】从零到工程级实战

目录 &#x1f31f; 前言&#x1f3d7;️ 技术背景与价值&#x1fa79; 当前技术痛点&#x1f6e0;️ 解决方案概述&#x1f465; 目标读者说明 &#x1f9e0; 一、技术原理剖析&#x1f4ca; 核心概念图解&#x1f4a1; 核心作用讲解&#x1f527; 关键技术模块说明⚖️ 技术选…...

leetcode 算法每日一题 #1

#1 &#xff01; 题目 3355. 零数组变换 I 中等 相关标签 相关企业 提示 给定一个长度为 n 的整数数组 nums 和一个二维数组 queries&#xff0c;其中 queries[i] [li, ri]。对于每个查询 queries[i]&#xff1a;在 nums 的下标范围 [li, ri] 内选择一个下标 子集。 将选中的…...

用matlab提取abaqus odb文件中的节点信息

在MATLAB中提取Abaqus ODB文件中的节点信息&#xff0c;可以通过以下几种方法实现&#xff1a; 方法1&#xff1a;使用MATLAB的ABAQUS Interface工具箱 https://wenku.csdn.net/answer/77axwtqnys 可以参考这个 MATLAB的ABAQUS Interface工具箱提供了直接读取ODB文件的功能。…...

Spring Bean 注册到容器的方式

Spring Bean 注册到容器的方式主要包括以下几种&#xff1a; 基于 XML 的配置 使用 XML 文件配置 Bean&#xff0c;并定义 Bean 的依赖关系。 基于 Component 注解及其衍生注解 使用注解如 Component、Service、Controller、Repository 等进行配置。 基于 Configuration 和…...

1537. 【中山市第十一届信息学邀请赛决赛】未命名 (noname)

题目描述 这是一个独一无二的世界&#xff0c;所以有 N 张写有互不相同的自然数的卡片&#xff0c;第 i 张卡片写着 Ai &#xff0c;现在你得到了一个未命名的空白卡片&#xff0c;想在上面写上一个自然数 x 满足以下条件&#xff1a; 1.x 不等于任意一张卡片上的数字。 2.x 可…...

数据库三范式详解与应用建议

数据库三范式&#xff08;Normalization&#xff09;是关系型数据库设计的核心原则&#xff0c;旨在减少数据冗余、提高数据一致性&#xff0c;并避免插入、更新和删除异常。以下是三范式的详细说明&#xff1a; 第一范式&#xff08;1NF&#xff09; 核心要求&#xff1a;确保…...

信息学奥赛一本通 1539:简单题 | 洛谷 P5057 [CQOI2006] 简单题

【题目链接】 ybt 1539&#xff1a;简单题 洛谷 P5057 [CQOI2006] 简单题 【题目考点】 1. 树状数组 知识点讲解见&#xff1a;洛谷 P3374 【模板】树状数组 【解题思路】 解法1&#xff1a;树状数组 该有01构成数组初值都为0。 某位置的元素被修改奇数次后值为1&#x…...

C++笔记-封装红黑树实现set和map

1.源码及框架分析 上面就是在stl库中set和map的部分源代码。 通过上图对框架的分析&#xff0c;我们可以看到源码中rb_tree⽤了⼀个巧妙的泛型思想实现&#xff0c;rb_tree是实 现key的搜索场景&#xff0c;还是key/value的搜索场景不是直接写死的&#xff0c;⽽是由第⼆个模板…...

deepseek模拟美团高级java开发工程师面试题

美团高级Java开发工程师面试题及参考答案 一、Java基础部分 1. HashMap实现原理 题目&#xff1a; 请详细描述JDK8中HashMap的实现原理为什么JDK8要将链表转为红黑树&#xff1f;阈值为什么是8&#xff1f;HashMap在多线程环境下会出现什么问题&#xff1f;如何解决&#x…...

留给王小川的时间不多了

王小川&#xff0c;这位头顶“天才少年”光环的清华学霸、搜狗输入法创始人、中国互联网初代技术偶像&#xff0c;正迎来人生中最难啃的硬骨头。 他在2023年创立的百川智能&#xff0c;被称为“大模型六小虎”之一。今年4月&#xff0c;王小川在全员信中罕见地反思过去两年工作…...

回溯算法:解锁多种问题的解决之门

经典回溯算法 回溯算法是一种基于深度优先搜索的算法&#xff0c;通过探索所有可能的候选解来找出所有可能的解。当候选解不满足条件时&#xff0c;会回溯到上一步&#xff0c;尝试其他的候选解。下面将介绍回溯算法在组合问题、切割问题、排列问题、子集问题、棋盘问题和图的…...

国产频谱仪性能如何?矢量信号分析仪到底怎么样?

矢量信号分析仪是一种高性能的电子测量设备&#xff0c;具备频谱分析、矢量信号分析、实时频谱分析、脉冲信号分析、噪声系数测量、相位噪声测量等多种功能。它能够对各类复杂信号进行精确的频谱特性分析、调制质量评估、信号完整性检测以及干扰源定位等操作。广泛应用于通信、…...

熔断器(Hystrix,Resilience4j)

熔断器 核心原理​ 熔断器通过监控服务调用失败率&#xff0c;在达到阈值时自动切断请求&#xff0c;进入熔断状态&#xff08;类似电路保险丝&#xff09;。其核心流程为&#xff1a; 关闭状态&#xff08;Closed&#xff09;​​&#xff1a;正常处理请求&#xff0c;统计失…...

贪心算法套路模板+详细适用场景+经典题目清单

1. 排序 贪心选择 适用场景&#xff1a; 任务调度问题&#xff1a;需要安排多个任务&#xff0c;尽量完成更多任务或最小冲突。 区间调度问题&#xff1a;选出最多互不重叠的区间。 区间覆盖问题&#xff1a;用最少区间覆盖某个范围。 合并区间问题&#xff1a;合并重叠区…...

C++23 容器从其他兼容范围的可构造性与可赋值性 (P1206R7)

文章目录 背景与动机提案内容与实现细节提案 P1206R7实现细节编译器支持 对开发者的影响提高灵活性简化代码向后兼容性 总结 C23标准引入了对容器构造和赋值的新特性&#xff0c;这些特性使得容器能够更灵活地从其他兼容范围初始化&#xff0c;并支持从范围赋值。这些改进由提案…...

多通道振弦式数据采集仪MCU安装指南

设备介绍 数据采集仪 MCU集传统数据采集器与5G/4G,LoRa/RS485两种通信功能与一体的智能数据采集仪。该产品提供振弦、RS-485等的物理接口&#xff0c;能自动采集并存储多种自然资源、建筑、桥梁、城市管廊、大坝、隧道、水利、气象传感器的实时数据&#xff0c;利用现场采集的数…...

Axios中POST、PUT、PATCH用法区别

在 Axios 中&#xff0c;POST、PUT 和 PATCH 是用于发送 HTTP 请求的三种不同方法&#xff0c;它们的核心区别源自 HTTP 协议的设计语义。以下是它们的用法和区别&#xff1a; 1. POST 语义&#xff1a;用于创建新资源。 特点&#xff1a; 非幂等&#xff08;多次调用可能产生…...

synchronized 实现原理

1. 对象头与 Mark Word 每个 Java 对象在内存中分为三部分&#xff1a;对象头、实例数据 和 对齐填充。 对象头 是核心部分&#xff0c;包含以下信息&#xff1a; Mark Word&#xff08;标记字段&#xff09;&#xff1a;存储对象的哈希码、分代年龄、锁状态等。Klass Pointe…...

SOC-ESP32S3部分:9-GPIO输入按键状态读取

飞书文档https://x509p6c8to.feishu.cn/wiki/L6IGwHKV6ikQ08kqwAwcAvhznBc 前面我们学习了GPIO的输出&#xff0c;GPIO输入部分其实也是一样的&#xff0c;这里我们使用按键作为GPIO输入例程讲解&#xff0c;分三步走。 查看板卡原理图&#xff0c;确定使用的是哪个GPIO查看G…...