如何合并大小写字母统计列表?现有代码是否可挽救?
解决字母统计列表合并问题
不用重写现有统计代码的合并方法
你不需要重新编写整个统计逻辑,只需要基于已有的small_letter_status和capital_letter_status列表做简单处理即可,分两种场景:
场景1:合并为不区分大小写的总统计列表(26个元素,对应a-z的总出现次数)
直接用列表推导式将两个列表对应位置的数值相加:
# 合并两个列表,每个位置为对应字母大小写的总次数 merged_status = [small + capital for small, capital in zip(small_letter_status, capital_letter_status)] # 打印合并后的结果 print("\nCombined Letter Count (case-insensitive)") for idx in range(len(merged_status)): print(chr(idx + ord('a')), merged_status[idx])
场景2:合并为区分大小写的完整统计列表(52个元素,包含A-Z和a-z的单独次数)
直接将两个列表拼接即可,顺序可以按需调整:
# 合并为大写在前、小写在后的列表 merged_status = capital_letter_status + small_letter_status # 打印合并后的结果 print("\nCombined Letter Count (case-sensitive)") # 打印大写字母部分 for idx in range(26): print(chr(idx + ord('A')), merged_status[idx]) # 打印小写字母部分 for idx in range(26, 52): print(chr(idx - 26 + ord('a')), merged_status[idx])
可选:优化统计逻辑,直接生成合并列表
如果你想简化代码,可以直接在统计阶段就生成不区分大小写的总列表,避免维护两个单独的列表:
combined_status = [0] * 26 for x in txt: if x.isalpha(): # 将字符转为小写后计算索引,统一统计 idx = ord(x.lower()) - ord('a') combined_status[idx] += 1 # 打印结果 print("\nCombined Letter Count") for idx in range(len(combined_status)): print(chr(idx + ord('a')), combined_status[idx])
内容的提问来源于stack exchange,提问作者Kelly
相关产品推荐
相关产品推荐

