Python题库:集合
集合添加元素
集合元素删除
集合的属性、方法与运算
字符串去重排序
列表去重
猜年龄
目录
- 1 集合添加元素(2022重点看)
- 2 集合元素删除
- 2.1 描述
- 2.1.1 s.remove(x)
- 2.1.2 s.discard(x)
- 2.1.3 s.pop()
- 2.2 输入
- 2.3 输出
- 2.4 输入输出示例
- 2.5 代码
- 2.1 描述
- 3 集合的属性、方法与运算
- 4 字符串去重排序(2022重点看)
- 5 列表去重(2022重点看)
集合添加元素(2022重点看)
描述
向集合中加入单一元素,可以使用.add() 方法操作,该 操作将向集合中加入,返回值为“None”
例如:
s = set('Wuhan') print(s) # {'n', 'a', 'W', 'u', 'h'} s.add('A') # 向集合中增加一个元素 print(s) # {'n', 'a', 'A', 'W', 'u', 'h'} print(s.add('Hubei')) # 本方法返回值为 None print(s) # {'n', 'a', 'A', 'W', 'u', 'Hubei', 'h'}
应用你的知识帮助你的好朋友小明,小明喜欢集邮,他有大量的来自不同国家的邮票,他决定数一下他的集邮册中共有来自多少个不同国家的邮票,他请你帮忙,你一个一个的把N张邮票拿出来,找出共有多少个不重复的国家。
输入
第一行输入一个整数N,表示所有邮票的数目
接下来的N行,每行输入一张邮票来自哪一个国家的名字
输出
在一行中输出不重复的国家的数量
输入输出示例
输入 输出 示例 1 7 UK China USA France New Zealand UK France 5 平均代码量 5 行
代码
N = int(input()) s = set() for i in range(N): countryName = input() s.add(countryName) print(len(s))
集合元素删除
描述
s.remove(x)
从集合s 中删除元素x,若x在集合中不存在,触发 KeyError,返回值为None。
s = set([1, 2, 3, 4, 5, 6, 7, 8, 9]) s.remove(5) print(s) # {1, 2, 3, 4, 6, 7, 8, 9} print(s.remove(4)) # None print(s) # {1, 2, 3, 6, 7, 8, 9} s.remove(0) # KeyError: 0
s.discard(x)
从集合s 中删除元素x,若x在集合中不存在,不会触发 KeyError,返回值为None。
s = set([1, 2, 3, 4, 5, 6, 7, 8, 9]) s.discard(5) print(s) # {1, 2, 3, 4, 6, 7, 8, 9} print(s.discard(4)) # None print(s) # {1, 2, 3, 6, 7, 8, 9} s.discard(0) print(s) # {1, 2, 3, 6, 7, 8, 9}
s.pop()
从集合s 中随机删除一个元素,返回值为删除的元素。当集合为空时,触发 KeyError。
s = set([1]) print(s.pop()) # 1 print(s) # set() s.pop() # KeyError: 'pop from an empty set'
针对一个非空集合,执行在N行中给出的N个命令,这些命令包括 pop, remove 和 discard
输入
第一行输入 n 个用空格分隔的非负整数(每个整数都不大于30)
第二行输入一个整数N,表示执行命令的次数
随后的N行包括包括 pop, remove 或 discard中的一个命令,跟随要处理的数值
输出
集合中元素的和
输入输出示例
输入 输出 示例 1 1 2 3 4 5 6 7 8 9 10 pop remove 9 discard 9 discard 8 remove 7 pop discard 6 remove 5 pop discard 5
4
代码
def sumSet(s,N): for i in range(N): ls = input().split() if ls[0] == 'discard': s.discard(int(ls[1])) elif ls[0] == 'pop': s.pop() elif ls[0] == 'remove' and int(ls[1]) in s: s.remove(int(ls[1])) return sum(s) if __name__ == '__main__': s = set(map(int, input().split())) N = int(input()) print(sumSet(s,N))
集合的属性、方法与运算
描述
将用户输入用空格分隔的一系列地名创建集合MySet,输入一个正整数 n,你将被要求读入 n 个输入(输入形式如下所示),每得到一个输入后,根据输入进行操作。
add name: # 在集合中加入元素name print: # 将集合转为列表,按元素升序排序后输出列表 del name: # 删除集合中的元素name,当name不存在时,不能引发错误 update name: # name为空格逗号分隔的字符串,将其转为集合,并用name中的元素修改集合MySet clear: # 清空集合
输入
第一行输入一个正整数 n
第二行输入用空格分隔的字符串切分为一系列地名
随后的 n 行,每行输入一个如示例格式的命令,命令与参数间空格分隔
输出
每遇到“print”时,将集合转为列表,按元素升序排序后输出列表
输入 输出 示例 1 8 湖北 湖南 吉林 print del 湖北 print clear add 江西 add 河北 update 北京 上海 天津 重庆 print ['吉林', '湖北', '湖南'] ['吉林', '湖南'] ['上海', '北京', '天津
代码
def method_of_set(n): name = input() # 吉林,湖北,湖南 my_set = set(name.split()) # 输入转集合 for i in range(n): ls = input().split() # 输入命令及参数,之间用空格分隔 if ls[0] == 'print': # 如要输入的命令是“print”,集合转列表输出 print(sorted(list(my_set))) elif ls[0] == 'update': # 如要输入的命令是“update”,用name中的元素修改集合 my_set.update(set(ls[1:])) elif ls[0] == 'add': # 如要输入的命令是“add”,在集合中加入元素name my_set.add(ls[1]) elif ls[0] == 'del': # 如要输入的命令是“del”,删除集合中的元素name,当name 不存在时,不能引发错误 my_set.discard(ls[1]) elif ls[0] == 'clear': # 如要输入的命令是“clear”,清空集合中全部元素 my_set.clear() if __name__ == '__main__': num = int(input()) # 输入一个正整数 num method_of_set(num)
字符串去重排序(2022重点看)
描述
输入一个非空字符串,去除重复的字符后,从小到大排序输出为一个新字符串。
输入
一个非空字符串
输出
去重排序后的字符串
输入输出示例
输入 输出 示例 1 Life is short, you need Python! !,LPdefhinorstuy
列表去重(2022重点看)
描述
输入一系列以逗号分隔的英文人名,其中包含重复的名字,请将其中重复的名字去掉,输出包含不重复人名的列表,名字出现顺序与输入顺序相同。
输入
一系列以逗号分隔的英文人名
输出
包含不重复人名的列表,名字出现顺序与输入顺序相同
输入输出示例
输入 输出 示例 1 Calvin,bob,ada,McCord,Smith,Babbs,Calvin,Smith ['Calvin', 'bob', 'ada', 'McCord', 'Smith', 'Babbs']