Python计算Total Sum of Squares(TSS)结果异常排查求助
代码问题排查
错误原因
原代码存在两个核心逻辑错误:
- 没有初始化专门的累加变量存储平方和结果,循环内的
i是遍历列表的临时变量,每次迭代都会被覆盖为列表的下一个元素,累加操作完全无效 - 循环结束后返回的是最后一次迭代的
i值:最后一个元素是13,均值为4,13 + (13-4)**2 = 13 +81 =94,就是你得到的错误结果
修复后的代码
from statistics import mean x = [3,1,3,1,3,13] def tss(a): m = mean(a) total = 0 for i in a: total += (i - m)**2 return total print(tss(x))
运行后输出结果为102,和预期一致。
更简洁的实现方式
也可以用生成器表达式简化代码,逻辑完全等价:
from statistics import mean def tss(a): m = mean(a) return sum((i - m)**2 for i in a)
内容的提问来源于stack exchange,提问作者Guilherme Silva
相关产品推荐
相关产品推荐

