You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用reduce()计算列表元素平方和时出现TypeError错误的原因咨询

问题解答

错误原因

reduce函数的回调逻辑必须接收两个参数:第一个是「累积计算的结果」,第二个是「当前遍历到的列表元素」。你写的lambda x: x ** 2只定义了一个参数,当reduce执行时,会自动把累积值和当前元素一起传入这个lambda,自然就触发了「参数数量不匹配」的错误。

修正方案

方案1:修正reduce的用法

给lambda补上累积值参数,同时指定初始累积值(第三个参数0),先计算元素平方再累加到累积值里:

from functools import reduce

def square_sum(numbers):
    return reduce(lambda acc, num: acc + num ** 2, numbers, 0)

print(square_sum([1, 2, 2]))  # 输出9

方案2:用sum替代reduce(更推荐)

计算平方和没必要用reduce,直接用sum配合生成器表达式更直观,可读性更强:

def square_sum(numbers):
    return sum(num ** 2 for num in numbers)

print(square_sum([1, 2, 2]))  # 输出9

内容的提问来源于stack exchange,提问作者mind overflow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 07:54:26