【卡码网Python基础课 17.判断集合成员】
目录
- 题目描述与分析
- 一、集合
- 二、集合的常用方法
- 三、代码编写
题目描述与分析
题目描述:
请你编写一个程序,判断给定的整数 n 是否存在于给定的集合中。
输入描述:
有多组测试数据,第一行有一个整数 k,代表有 k 组测试数据。
每组数据第一行首先是一个正整数 m,表示集合中元素的数量(1 <= m <= 1000)。
接下来一行包含 m 个整数,表示集合中的元素。
最后一行包含一个整数 n,表示需要进行判断的目标整数。
输出描述:
包含多组输出,每组输出占一行。
如果集合中存在 m,输出“YES”,否则输出“NO”。
输入示例:
2
5
1 2 3 4 5
3
6
1 2 3 4 5 6
7
输出示例:
YES
NO
一、集合
在Python中,集合(set)是一个无序的数据结构,用于存储唯一的元素。集合是基于哈希表实现的,因此它支持高效的成员检查、添加和删除操作。集合非常适合用于去除重复项、进行集合运算如并集、交集、差集和对称差集。
可以使用花括号 {} 或 set() 函数来创建集合:
# 使用花括号创建集合
my_set = {1, 2, 3, 4, 5}
print(my_set)# 使用set()函数创建集合,通常用于将列表转换为集合
my_list = [1, 2, 2, 3, 4]
my_set = set(my_list)
print(my_set) # 输出 {1, 2, 3, 4}
集合最常见的用法是判断某个元素是否在集合中和去除集合中的重复元素。
判断某个元素是否在集合中可以使用in关键字
my_set = {"Tom", "Jerry", "Mike"}
# 判断元素是否在集合中
if "Tom" in my_set:# 集合用于存储一组不重复的元素,可以自动去重
my_list = [1, 2, 3, 3, 4, 5, 5]
my_set = set(my_list) # 将列表转换为集合,去除重复元素
unique_list = list(my_set) # 将集合转换回列表, 此时列表是[1,2,3,4,5]
类似于数学中的操作,集合还支持求并集、交集、差集、对称差集。
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}# 交集
print(a & b) # 输出 {3, 4}
print(a.intersection(b)) # 同上# 并集
print(a | b) # 输出 {1, 2, 3, 4, 5, 6}
print(a.union(b)) # 同上# 差集
print(a - b) # 输出 {1, 2}
print(a.difference(b)) # 同上# 对称差集(元素在a或b中,但不会同时出现在二者中)
print(a ^ b) # 输出 {1, 2, 5, 6}
print(a.symmetric_difference(b)) # 同上
二、集合的常用方法
除了以上两种常见的操作,set还提供了一些常见方法方便使用,主要包括的就是集合的增删和遍历操作。
1.添加元素:使用add()方法可以向集合中添加单个元素。
2.移除元素:使用remove()或者discard()方法可以从集合中移除指定元素, 它们之间的区别在于当移除一个集合中不存在的元素时,remove()会引起异常,而discard()不会。
3.集合长度:使用len()函数可以获取集合的元素个数。
4.清空集合:使用clear()方法可以清空集合中的所有元素。
5.遍历集合:使用for循环可以遍历集合中的元素。
# 创建集合
set1 = {1, 2, 3}# 向集合添加元素
set1.add(4)# 遍历集合
for element in set1:print(element)# 移除集合元素
set1.remove(3)# 获取集合长度
print(len(set1))# 清空集合中的元素
set1.clear()
三、代码编写
根据题目要求,首先需要读取k,表示测试用例的数量,然后迭代k次
k = int(input()) # 读取测试用例的数量for _ in range(k):
遍历 k 组数据,每组数据第一行首先是一个正整数 m, 表示集合中元素的数量
m = int(input()) # 读取集合中元素的数量
类似于列表的读取,这里需要读取一行作为字符串,将之拆分成列表,并转为整数,最后使用set()转换成整数集合
elements = set(map(int, input().split())) # 读取集合中的元素,用空格分隔并转换为整数集合
最后一行包含一个整数 n,表示需要进行判断的目标整数,可以使用in进行判断,如果在集合中,输出Yes, 如果不在集合中,输出No
n = int(input()) # 读取需要判断的目标整数
# in 判断 目标整数 是否在集合中
if n in elements:print("YES")
else:print("NO")
完整代码如下:
k = int(input()) # 读取测试用例的数量for _ in range(k):m = int(input()) # 读取集合中元素的数量elements = set(map(int, input().split())) # 读取集合中的元素,用空格分隔并转换为整数集合n = int(input()) # 读取需要判断的目标整数if n in elements:print("YES")else:print("NO")
相关文章:
【卡码网Python基础课 17.判断集合成员】
目录 题目描述与分析一、集合二、集合的常用方法三、代码编写 题目描述与分析 题目描述: 请你编写一个程序,判断给定的整数 n 是否存在于给定的集合中。 输入描述: 有多组测试数据,第一行有一个整数 k,代表有 k 组测…...
生物研究新范式!AI语言模型在生物研究中的应用
–https://doi.org/10.1038/s41592-024-02354-y 留意更多内容,欢迎关注微信公众号:组学之心 Language models for biological research: a primer 研究团队及研究单位 James Zou–Department of Biomedical Data Science, Stanford University, Stan…...
python语言day08 属性装饰器和property函数 异常关键字 约束
属性装饰器: 三个装饰器实现对私有化属性_creat_time的get,set,del方法; 三个装饰器下的方法名都一样,通过message.creat_time的不同操作实现调用get,set,del方法。 __inti__: 创建并…...
day01JS-数据类型-01
1. 浏览器内核 通常所谓的浏览器内核也就是浏览器所采用的渲染引擎,渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息。不同的浏览器内核对网页编写语法的解释也有不同,因此同一网页在不同的内核的浏览器里的渲染(显示)…...
MATLAB 手动实现一种高度覆盖值提取建筑物点云的方法(74)
专栏往期文章,包含本章 MATLAB 手动实现一种高度覆盖值提取建筑物点云的方法(74) 一、算法介绍二、算法实现1.代码2.效果总结一、算法介绍 手动实现一种基于高度覆盖值的建筑物点云提取方法,适用于高大的城市建筑物,比只利用高度提取建筑物的方法更加稳定和具有价值,主要…...
git的下载与安装(Windows)
Git是一个开源的分布式版本控制系统(Distributed Version Control System,简称DVCS),它以其高效、灵活和强大的功能,在现代软件开发中扮演着至关重要的角色。 git官网:Git (git-scm.com) 1.进入git官网 2…...
腾讯云AI代码助手 —— 编程新体验,智能编码新纪元
阅读导航 引言一、开发环境介绍1. 支持的编程语言2. 支持的集成开发环境(IDE) 二、腾讯云AI代码助手使用实例1. 开发环境配置2. 代码补全功能使用💻自动生成单句代码💻自动生成整个代码块 3. 技术对话3. 规范/修复错误代码4. 智能…...
使用 ESP32 和 TFT 屏幕显示实时天气信息 —— 基于 OpenWeatherMap API
实时监测环境数据是一个非常常见的应用场景,例如气象站、智能家居等。这篇博客将带你使用 ESP32 微控制器和一个 TFT 屏幕,实时显示当前城市的天气信息。通过 OpenWeatherMap API,我们能够获取诸如温度、天气情况以及经纬度等详细的天气数据&…...
高阶数据结构——B树
1. 常见的搜索结构 以上结构适合用于数据量相对不是很大,能够一次性存放在内存中,进行数据查找的场景。如果数据量很大,比如有100G数据,无法一次放进内存中,那就只能放在磁盘上了,如果放在磁盘上࿰…...
Vue2中watch与Vue3中watch对比和踩坑
上一节说到了 computed计算属性对比 ,虽然计算属性在大多数情况下更合适,但有时也需要一个自定义的侦听器。这就是为什么 Vue 通过 watch 选项提供了一个更通用的方法,来响应数据的变化。当需要在数据变化时执行异步或开销较大的操作时&#…...
在Java程序中执行Linux命令
在Java中执行Linux命令通常涉及到使用Java的运行时类 (java.lang.Runtime) 或者 ProcessBuilder 类来启动一个外部进程 1. 使用 Runtime.exec() Runtime.exec() 方法可以用来执行一个外部程序。它返回一个 Process 对象,可以通过这个对象与外部程序交互࿰…...
微信小程序在不同移动设备上的差异导致原因
在写小程序的时候用了rpx自适应单位,但是还是出现了在不同机型上布局不统一的问题,在此记录一下在首页做一个输入框,在测试的时候,这个输入框在不同的机型上到处跑,后来排查了很久都不知道为什么会这样 解决办法是后 …...
快速体验fastllm安装部署并支持AMD ROCm推理加速
序言 fastllm是纯c实现,无第三方依赖的高性能大模型推理库。 本文以国产海光DCU为例,在AMD ROCm平台下编译部署fastllm以实现LLMs模型推理加速。 测试平台:曙光超算互联网平台SCNet GPU/DCU:异构加速卡AI 显存64GB PCIE&#…...
报错:java: javacTask: 源发行版 8 需要目标发行版 1.8
程序报错: Executing pre-compile tasks... Loading Ant configuration... Running Ant tasks... Running before tasks Checking sources Copying resources... [gulimail-coupon] Copying resources... [gulimail-common] Parsing java… [gulimail-common] java…...
【数据结构篇】~单链表(附源码)
【数据结构篇】~链表 链表前言链表的实现1.头文件2.源文件 链表前言 链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 1、链式机构在逻辑上是连续的,在物理结构上不一定连续 2、结点一般是从…...
旋转图像(LeetCode)
题目 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 解题 def rotate(matrix):n len(matrix)# 矩阵转置for i in range(n):for…...
入门 - vue中v-model的实现原理和完整用法详解
v-model介绍 v-model是vue的双向绑定的指令,能将页面上控件输入的值同步更新到相关绑定的data属性,也会在更新data绑定属性时候,更新页面上输入控件的值。在view层,model层相互需要数据交互,即可使用v-model。 双向绑…...
【区块链+金融服务】港融区域股权服务平台 | FISCO BCOS应用案例
中国证监会在 2020 年启动了区块链建设试点工作,提出建设基于区块链的场外市场登记系统和交易报告库,利 用区块链去中心化、不易篡改、安全稳定等技术特点,构建区域性股权市场数字化信任机制,为区域性股权市场 提供基础支撑设施。…...
Nginx反向代理和前后端分离项目打包部署
Nginx反向代理 Nginx的定位:主要用于做反向代理,一般都是用它来做前端页面的服务器,动态资源代理到后端服务器。这样做的好处是可以避免跨域请求带来的不便。 使用Nginx主要是对Nginx中的nginx.conf文件进行配置: 虚拟主机配置…...
Spring 中ApplicationContext
ApplicationContext 是 Spring 框架中最重要的接口之一,用于提供 Spring IoC 容器的功能。它是一个比 BeanFactory 更高级的容器,负责管理 Spring bean 的生命周期,同时提供对各种企业服务的集成,例如事件传播、国际化、弱引用等。…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...
c# 局部函数 定义、功能与示例
C# 局部函数:定义、功能与示例 1. 定义与功能 局部函数(Local Function)是嵌套在另一个方法内部的私有方法,仅在包含它的方法内可见。 • 作用:封装仅用于当前方法的逻辑,避免污染类作用域,提升…...
【深度学习新浪潮】什么是credit assignment problem?
Credit Assignment Problem(信用分配问题) 是机器学习,尤其是强化学习(RL)中的核心挑战之一,指的是如何将最终的奖励或惩罚准确地分配给导致该结果的各个中间动作或决策。在序列决策任务中,智能体执行一系列动作后获得一个最终奖励,但每个动作对最终结果的贡献程度往往…...
解析两阶段提交与三阶段提交的核心差异及MySQL实现方案
引言 在分布式系统的事务处理中,如何保障跨节点数据操作的一致性始终是核心挑战。经典的两阶段提交协议(2PC)通过准备阶段与提交阶段的协调机制,以同步决策模式确保事务原子性。其改进版本三阶段提交协议(3PC…...
前端开发者常用网站
Can I use网站:一个查询网页技术兼容性的网站 一个查询网页技术兼容性的网站Can I use:Can I use... Support tables for HTML5, CSS3, etc (查询浏览器对HTML5的支持情况) 权威网站:MDN JavaScript权威网站:JavaScript | MDN...
