寻求简化数组元素计数程序的替代方案(非.count()方法)
简化数组数字出现次数统计的代码优化
原代码存在两个核心问题:一是重复的计数判断逻辑冗余,二是条件判断和流程控制存在逻辑错误(比如check[0]!=check[1]!=check[2]无法正确识别两同一异的情况,且每个count判断后直接break会导致后续检查无法执行)。
可以用collections.Counter来一次性统计所有数字的出现次数,大幅简化逻辑:
from collections import Counter counts = Counter(check) if len(counts) == 1: # 三个数字全相同 print('jackpot!') money += 100 elif 2 in counts.values(): # 存在数字出现两次 print('you\'ve won £50') money += 50 else: # 三个数字全不同 print('youve lost') break
优化点说明:
- Counter统计:一次性统计数组中所有数字的出现次数,避免多次调用
.count()的冗余操作; - 逻辑修正:
- 用
len(counts) ==1准确判断三个数字完全相同的情况; - 用
2 in counts.values()直接检查是否有数字出现两次,覆盖所有两同一异的场景; - 流程更清晰,避免原代码中break导致的逻辑中断问题。
- 用
如果不想导入模块,也可以用字典手动统计,逻辑一致:
counts = {} for num in check: counts[num] = counts.get(num, 0) + 1 # 后续判断逻辑和上面一致
内容的提问来源于stack exchange,提问作者Adam Katz
相关产品推荐
相关产品推荐

