Python3 【集合】水平考试:精选试题和答案
Python3 【集合】水平考试:精选试题和答案
本试卷共计 30 道题。其中:选择题 15 题、填空题 10 题和编程题 5 题。满分为 100 分,每道题后附有正确答案。
Python 集合测试试卷
一、选择题(每题2分,共30分)
-
集合中的元素是( )。
- A. 有序的
- B. 无序的
- C. 可变的
- D. 可重复的
答案:B
-
以下哪个操作可以创建一个空集合?
- A.
{}
- B.
set()
- C.
[]
- D.
()
答案:B
- A.
-
集合中的元素必须是( )。
- A. 可变的
- B. 不可变的
- C. 可哈希的
- D. 可排序的
答案:B 和 C
-
以下哪个方法可以用于向集合中添加元素?
- A.
append()
- B.
add()
- C.
insert()
- D.
extend()
答案:B
- A.
-
以下哪个方法可以安全地移除集合中的元素(即使元素不存在也不会报错)?
- A.
remove()
- B.
discard()
- C.
pop()
- D.
clear()
答案:B
- A.
-
以下哪个操作可以计算两个集合的并集?
- A.
&
- B.
|
- C.
-
- D.
^
答案:B
- A.
-
以下哪个操作可以计算两个集合的交集?
- A.
&
- B.
|
- C.
-
- D.
^
答案:A
- A.
-
以下哪个操作可以计算两个集合的差集?
- A.
&
- B.
|
- C.
-
- D.
^
答案:C
- A.
-
以下哪个操作可以计算两个集合的对称差集?
- A.
&
- B.
|
- C.
-
- D.
^
答案:D
- A.
-
以下哪个方法可以清空集合中的所有元素?
- A.
remove()
- B.
discard()
- C.
pop()
- D.
clear()
答案:D
- A.
-
以下哪个方法可以随机移除并返回集合中的一个元素?
- A.
remove()
- B.
discard()
- C.
pop()
- D.
clear()
答案:C
- A.
-
以下哪个方法可以判断一个集合是否是另一个集合的子集?
- A.
issubset()
- B.
issuperset()
- C.
isdisjoint()
- D.
union()
答案:A
- A.
-
以下哪个方法可以判断两个集合是否没有交集?
- A.
issubset()
- B.
issuperset()
- C.
isdisjoint()
- D.
union()
答案:C
- A.
-
以下哪个操作可以将多个元素添加到集合中?
- A.
add()
- B.
update()
- C.
insert()
- D.
extend()
答案:B
- A.
-
以下哪个代码会报错?
- A.
my_set = {1, 2, 3}
- B.
my_set = set([1, 2, 3])
- C.
my_set = {[1, 2, 3]}
- D.
my_set = set((1, 2, 3))
答案:C
- A.
二、填空题(每题3分,共30分)
-
集合中的元素是________的。(填“唯一”或“可重复”)
答案:唯一
-
使用________方法可以向集合中添加单个元素。
答案:
add()
-
使用________方法可以安全地移除集合中的元素(即使元素不存在也不会报错)。
答案:
discard()
-
集合的差集操作符是________。
答案:
-
-
集合的对称差集操作符是________。
答案:
^
-
使用________方法可以清空集合中的所有元素。
答案:
clear()
-
使用________方法可以判断一个集合是否是另一个集合的子集。
答案:
issubset()
-
使用________方法可以判断两个集合是否没有交集。
答案:
isdisjoint()
-
集合的并集操作符是________。
答案:
|
-
集合的交集操作符是________。
答案:
&
三、编程题(共40分)
1. 去重(5分)
编写一个函数 remove_duplicates(lst)
,接受一个列表作为参数,返回一个去重后的列表。
答案:
def remove_duplicates(lst):
return list(set(lst))
# 测试
print(remove_duplicates([1, 2, 2, 3, 4, 4, 5])) # 输出: [1, 2, 3, 4, 5]
2. 集合运算(10分)
编写一个函数 set_operations(set1, set2)
,接受两个集合作为参数,返回它们的并集、交集和差集。
答案:
def set_operations(set1, set2):
union = set1 | set2
intersection = set1 & set2
difference = set1 - set2
return union, intersection, difference
# 测试
set1 = {1, 2, 3}
set2 = {3, 4, 5}
print(set_operations(set1, set2)) # 输出: ({1, 2, 3, 4, 5}, {3}, {1, 2})
3. 对称差集(10分)
编写一个函数 symmetric_difference(set1, set2)
,接受两个集合作为参数,返回它们的对称差集。
答案:
def symmetric_difference(set1, set2):
return set1 ^ set2
# 测试
set1 = {1, 2, 3}
set2 = {3, 4, 5}
print(symmetric_difference(set1, set2)) # 输出: {1, 2, 4, 5}
4. 子集检测(10分)
编写一个函数 is_subset(set1, set2)
,接受两个集合作为参数,判断 set1
是否是 set2
的子集。
答案:
def is_subset(set1, set2):
return set1.issubset(set2)
# 测试
set1 = {1, 2}
set2 = {1, 2, 3, 4}
print(is_subset(set1, set2)) # 输出: True
5. 集合操作综合(15分)
编写一个函数 set_manipulation(lst)
,接受一个列表作为参数,完成以下操作:
- 将列表转换为集合并去重。
- 添加元素
10
到集合中。 - 移除元素
2
(如果存在)。 - 返回最终的集合。
答案:
def set_manipulation(lst):
my_set = set(lst)
my_set.add(10)
my_set.discard(2)
return my_set
# 测试
print(set_manipulation([1, 2, 2, 3, 4, 4, 5])) # 输出: {1, 3, 4, 5, 10}
总分:100分
通过这套试卷,可以全面测试对 Python 集合的理解和掌握程度。