卡码网语言基础课(Python) | 17.判断集合成员
判断集合成员
- 一、题目描述
- 二、集合
- 三、集合的常用方法
- 四、代码编写
一、题目描述
请你编写一个程序,判断给定的整数n是否存在于给定的集合中。
- 输入描述: 有多组测试数据,第一行有一个整数k,代表有k组测试数据。每组数据第一行首先是一个正整数m,表示集合中元素的数量(1<=m<=1000)。接下来一行包含m个整数,表示集合中的元素。最后一行包含一个整数n,表示需要进行判断的目标整数。
- 输出描述: 包含多组输出,每组输出占一行。如果集合中存在m,输出“YES”,否则输出“NO”。
二、集合
集合也是一种数据结构,和数学中的集合类似,它用于存储一组不重复的元素,并且不保证元素的顺序。查找通常是集合最重要的操作。
在Python中,你可以使用大括号{}创建集合,元素与元素之间使用逗号,分隔。
# 创建集合
my_set = {1, 2, 3}
或者你可以使用set()函数创建集合,或者是列表转为集合。
my_set1 = set([1, 2, 3])
# 创建空集合
my_set2 = set()
集合最常见的用法是判断某个元素是否在集合中和去除集合中的重复元素。
判断某个元素是否在集合中可以使用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]
类似于数学中的操作,集合还支持求并集、交集、差集。
set1 = {1, 2, 3}
set2 = {3, 4, 5}
u_set = set1 | set2 # 并集,现在集合是{1, 2, 3, 4, 5}
i_set = set1 & set2 # 交集,现在集合是{3}
d_set = set1 - set2 # 差集,表示存在于集合1中,但不存在于集合2中的元素{1, 2}
三、集合的常用方法
除了以上两种常见的操作,set还提供了一些常见方法方便使用,主要包括的就是集合的增删和遍历操作。
- 添加元素:使用add()方法可以向集合中添加单个元素。
- 移除元素:使用remove()或者discard()方法可以从集合中移除指定元素,它们之间的区别在于当移除一个集合中不存在的元素时,remove()会引起异常,而discard()不会。
- 集合长度:使用len()函数可以获取集合的元素个数。
- 清空集合:使用clear()方法可以清空集合中的所有元素。
- 遍历集合:使用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())
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")