前言:本笔记仅仅只是对内容的整理和自行消化,并不是完整内容,如有侵权,联系立删。
一、集合
在之前提到,哈希表主要是用来判断给定的整数是否存在于给定的数据中。而在上一节中我们使用了数组,通过索引来实现哈希表的功能。这一节我们主要学习集合的相关操作。
集合 set 也是一种数据结构,和数学中的集合类似,它用于存储一组不重复的元素,并且不保证集合中元素的顺序。在 Python 中,可以使用 { } 来创建集合,元素与元素之间使用逗号分隔。或者也可以使用 set ( ) 函数创建集合,或者是列表转为集合。
# 创建集合
my_set = {1,2,3}
# 使用 set() 创建空集合
my_set2 = set()
# 列表转集合
my_set3 = set([1,2,3])
在集合的操作中,最常见的是判断某个元素是否在集合中和去除列表中的重复元素。判断某个元素是否在集合中,我们可以采用关键字 in 。而去除重复元素,我们可以先将列表转换为集合,再将集合转换为列表,中间过程去除了重复元素。
set_1 = {1,2,3}
# 判断元素是否在集合中
if 1 in set_1:print("True!")# 去除重复元素
list_1 = [1,1,2,3,4,4,5,5,6]
set_2 = set(list_1) # 将列表转换为集合
list_2 = list(set_2) # 将集合转换为列表
类似于数学中的操作,集合还支持求并集、交集、差集。
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}
二、集合中的常用方法
在集合中,我们还有一些常用的方法,下面我们一个一个解释。我们以集合 {1,2,3} 为初始集合,依次来看一下进行相应操作后的输出结果。
1、添加元素:使用 add ( ) 方法来在集合中添加元素。
2、移除元素:使用 remove ( ) 或者 discard ( ) 方法可以从集合中移除指定元素。它们的不同之处在于,如果需要移除的元素实际上不存在在集合中时,remove ( ) 会引起异常,而 discard ( ) 不会。
3、集合清空:使用 clear ( ) 方法可以清空集合中的所有元素。
4、集合长度:使用 len ( ) 方法来获取集合中元素的个数。
三、利用所学解决问题
由于这道题目真的相当简单,这里也就不再赘述解题思路了。毕竟这里其实并没有深入地涉及到哈希表的用法。完整代码如下:
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")