如何修改Python代码实现嵌套列表间的字符串重复项查找
问题描述
现有Python代码仅能查找两个嵌套列表(cases、cases1)中重复的子列表,但实际需求是找出这两个嵌套列表中重复的字符串,并按指定格式输出。
当前代码:
# Getting inputs from users n = input() # number of test cases cases = [] cases1 = [] for case in range(int(n)): inputs = input() cases.append([str(x) for x in input().split()]) # n distinct space-separated strings cases1.append([str(y) for y in input().split()]) # n distinct space-separated strings # finding the duplicates for x in cases: total = 0 if x in cases1: total += 1 print(total, x) else: print(0)
当前程序输出(最后两行):
1 ['mouse', 'cat'] 0
期望输出(最后两行):
2, mouse, cat 2, elephant, tiger
修改思路
- 移除冗余输入读取:原代码中
inputs = input()是多余的,会导致少读一行有效输入,直接删除即可。 - 按测试用例求字符串交集:对每组对应的
cases[i]和cases1[i],将子列表转为集合,利用集合的交集操作快速定位重复字符串(集合自动去重,交集操作效率更高)。 - 匹配期望格式输出:统计交集的长度(即重复字符串的数量),将数量、字符串用逗号分隔输出,严格对齐期望格式。
修改后的代码
# 获取测试用例数量 n = int(input()) cases = [] cases1 = [] for _ in range(n): # 读取当前测试用例的两组字符串 group1 = input().split() group2 = input().split() cases.append(group1) cases1.append(group2) # 遍历每个测试用例,找出重复字符串 for i in range(n): # 转为集合求交集 common_strings = set(cases[i]) & set(cases1[i]) # 重复数量为交集的长度 count = len(common_strings) # 按期望格式输出 print(f"{count}, {', '.join(common_strings)}")
关键调整说明
- 直接将输入的测试用例数量转为整数,避免后续重复类型转换。
- 删除冗余的
inputs = input(),确保正确读取每组测试用例的两行输入数据。 - 用集合交集替代子列表匹配,精准定位两组字符串中的重复项,符合实际需求。
- 使用f-string格式化输出,严格匹配期望的「数量, 字符串1, 字符串2...」格式。
内容的提问来源于stack exchange,提问作者Zoey
相关产品推荐
相关产品推荐

