如何修改代码以打印所有重复数字及各数字的重复次数
代码修改方案
核心问题
你的代码仅输出第一个重复数字,本质是遍历统计过程中匹配到第一个符合重复条件的元素后就提前终止了逻辑,没有完成全量元素的计数和筛选。
具体修改点
- 移除提前终止语句:删除
break、return这类匹配到第一个重复结果后就跳出遍历的代码 - 先完成全量计数再筛选:不要边遍历边输出结果,先统计所有数字的出现次数,再统一筛选出重复项
- 用容器存储所有符合条件的结果:把所有重复数字和对应次数存入列表,遍历完成后统一输出
代码示例对比
错误写法(仅输出第一个重复项)
nums = [2,2,2,2,2,9,9,9,9,9] count = {} for num in nums: count[num] = count.get(num, 0) + 1 # 匹配到第一个重复就输出并跳出循环 if count[num] > 1: print((num, count[num])) break
修改后写法(输出所有重复项)
nums = [2,2,2,2,2,9,9,9,9,9] count = {} # 第一步:统计所有数字的出现次数 for num in nums: count[num] = count.get(num, 0) + 1 # 第二步:筛选所有出现次数大于1的数字,按要求格式输出 for num, cnt in count.items(): if cnt > 1: print((num, cnt))
运行修改后代码即可输出(2, 5)和(9, 5),如果你的需求是重复次数在前、数字在后,调整打印语句的元组顺序为(cnt, num)即可匹配你要的(5, 2)和(5, 9)输出。
内容的提问来源于stack exchange,提问作者Nutnicha
相关产品推荐
相关产品推荐

