集合练习题
集合的并集、交集、差集
题目描述
给定两个集合 A={1,2,3,4,5} 和 B={4,5,6,7,8},请编写 Python 程序计算并输出它们的并集、交集和差集(A-B 和 B-A)。
输出示例
并集: {1, 2, 3, 4, 5, 6, 7, 8}
交集: {4, 5}
A-B: {1, 2, 3}
B-A: {6, 7, 8}
实现代码
# 定义集合A和B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}# 计算并集(A和B中所有元素的集合,无重复)
union_set = A | B  # 等价于A.union(B)# 计算交集(A和B中共同拥有的元素)
intersection_set = A & B  # 等价于A.intersection(B)# 计算差集A-B(属于A但不属于B的元素)
diff_A_minus_B = A - B  # 等价于A.difference(B)# 计算差集B-A(属于B但不属于A的元素)
diff_B_minus_A = B - A  # 等价于B.difference(A)# 输出结果
print(f"并集: {union_set}")
print(f"交集: {intersection_set}")
print(f"A-B: {diff_A_minus_B}")
print(f"B-A: {diff_B_minus_A}")列表转集合去重
题目描述
将列表
[9, 5, 9, 3, 5, 7, 3]转换为集合以去除重复元素,打印去重后的结果。
输出示例
{3, 5, 7, 9}
实现代码
# 含重复元素的列表
num_list = [9, 5, 9, 3, 5, 7, 3]
# 转换为集合去重
unique_nums = set(num_list)
# 打印结果
print(unique_nums)用户行为分析
题目描述
APP 运营需分析用户行为:打开过 APP 的用户中,有多少人既没点赞也没评论。
要求:已知
所有打开 APP 的用户
all_users = {"u1", "u2", "u3", "u4", "u5"}
点赞用户
like = {"u1", "u2", "u3"}
评论用户
comment = {"u2", "u3", "u4"}计算并打印 “仅打开 APP,未点赞且未评论” 的用户。
输出示例
仅打开APP,未点赞且未评论的用户:{'u5'}
实现代码
# 定义用户行为集合
all_users = {"u1", "u2", "u3", "u4", "u5"}
like = {"u1", "u2", "u3"}
comment = {"u2", "u3", "u4"}# 计算“点赞或评论”的用户(并集)
active_users = like | comment# 计算“仅打开未互动”的用户(差集)
inactive_users = all_users - active_users# 打印结果
print(f"仅打开APP,未点赞且未评论的用户:{inactive_users}")vip用户验证
题目描述
验证一批用户 ID 中哪些是 VIP 用户,VIP 列表需去重以提高验证效率。
待验证用户 ID 列表:
user_ids = [101, 102, 103, 101, 104]
VIP 用户 ID 列表(含重复):
vip_raw = [102, 101, 102, 105]
将 VIP 列表去重后,遍历待验证列表,打印每个 ID 是否为 VIP(去重后判断)。
输出示例
101:是VIP
102:是VIP
103:不是VIP
101:是VIP
104:不是VIP
实现代码
# 待验证用户列表
user_ids = [101, 102, 103, 101, 104]# VIP列表去重
vip_raw = [102, 101, 102, 105]
vip_set = set(vip_raw)# 遍历验证
for uid in user_ids:if uid in vip_set:print(f"{uid}:是VIP")else:print(f"{uid}:不是VIP")抽奖系统
题目描述
模拟抽奖箱,从参与者中随机抽取奖项,抽完后清空奖池。
- 初始化抽奖箱集合为
{"张三", "李四", "王五", "赵六"}- 依次随机抽取 2 名幸运者(用 pop),分别输出 “一等奖” 和 “二等奖”
- 清空抽奖箱,输出剩余参与者(应为空)
输出示例
初始抽奖箱: {'张三', '李四', '王五', '赵六'}
一等奖: 李四
剩余参与者: {'张三', '王五', '赵六'}
二等奖: 赵六
剩余参与者: {'张三', '王五'}
清空抽奖箱后: set()
实现代码
# 初始化抽奖箱
lottery = {"张三", "李四", "王五", "赵六"}
print(f"初始抽奖箱: {lottery}")# 抽取一等奖
first = lottery.pop()
print(f"一等奖: {first}")
print(f"剩余参与者: {lottery}")# 抽取二等奖
second = lottery.pop()
print(f"二等奖: {second}")
print(f"剩余参与者: {lottery}")# 清空抽奖箱
lottery.clear()
print(f"清空抽奖箱后: {lottery}")单词操作
题目描述
处理英文文本时,对单词进行去重、删除无效词、随机提取单词。
初始化单词集合为
{"apple", "banana", "cat", "dog", "apple"}(自动去重)
添加单词 “egg”,删除无效词 “cat”,尝试删除不存在的 “fish”
随机提取 1 个单词作为 “今日单词”,输出剩余单词
输出示例
初始去重后单词: {'apple', 'banana', 'cat', 'dog'}
添加egg后: {'apple', 'banana', 'cat', 'dog', 'egg'}
删除cat并尝试删除fish后: {'apple', 'banana', 'dog', 'egg'}
今日单词: banana
剩余单词: {'apple', 'dog', 'egg'}
实现代码
# 初始化单词集合(自动去重)
words = {"apple", "banana", "cat", "dog", "apple"}
print(f"初始去重后单词: {words}")# 添加新单词
words.add("egg")
print(f"添加egg后: {words}")# 删除指定单词和无效词
words.remove("cat")
words.discard("fish")  # 无fish,不报错
print(f"删除cat并尝试删除fish后: {words}")# 随机提取今日单词
today_word = words.pop()
print(f"今日单词: {today_word}")
print(f"剩余单词: {words}")