如何用Python实现列表中重复整数相乘后与剩余整数相加?
实现思路与代码示例
核心逻辑拆解
要实现这个需求,关键是先统计每个数字的出现频率,再根据频率分别处理:
- 对于出现多次的数字:将其自身相乘对应次数(等价于计算该数字的
次数次方) - 对于只出现一次的数字:直接加入总和
具体实现步骤
- 统计数字频率:用
collections.Counter快速统计列表中每个数字的出现次数,这是Python处理这类统计最便捷的工具。 - 遍历计算结果:初始化一个总和变量,然后对每个统计项:
- 如果次数大于1:计算
数字 ** 次数,加到总和里 - 如果次数等于1:直接把数字加到总和里
- 如果次数大于1:计算
- 返回最终总和
代码实现
from collections import Counter def calculate_score(numbers): count = Counter(numbers) total = 0 for num, freq in count.items(): if freq > 1: total += num ** freq else: total += num return total # 测试示例 numbers = [3, 3, 2] print(calculate_score(numbers)) # 输出11 numbers2 = [4, 4, 4] print(calculate_score(numbers2)) # 输出64 numbers3 = [2, 4, 6] print(calculate_score(numbers3)) # 输出12
无模块依赖的手动实现
如果不想导入collections模块,也可以手动统计频率:
def calculate_score(numbers): freq_dict = {} for num in numbers: if num in freq_dict: freq_dict[num] += 1 else: freq_dict[num] = 1 total = 0 for num, freq in freq_dict.items(): total += num ** freq if freq > 1 else num return total
这个版本逻辑和用Counter完全一致,适合需要手动实现统计逻辑的场景。
内容的提问来源于stack exchange,提问作者Christian Gentry
相关产品推荐
相关产品推荐

