Python 如何在不导入的情况下计算方差和标准差

Python 如何在不导入的情况下计算方差和标准差,python,python-3.x,variance,Python,Python 3.x,Variance,我必须用python计算均值、方差和标准差 这是我的密码: def mean(first_data_values): return sum(first_data_values) / len(first_data_values) def variance(values): meanval = mean(values) return sum((values[i]-meanval) ** 2 for i in values)/len(values) def std(va

我必须用python计算均值、方差和标准差

这是我的密码:

def mean(first_data_values):

    return sum(first_data_values) / len(first_data_values)

def variance(values):

    meanval = mean(values)
    return sum((values[i]-meanval) ** 2 for i in values)/len(values)

def std(values):

    return (variance(values)) ** (1/2)

所以我得到了错误的结果。你知道怎么回事吗?

错误在下面一行:

return sum((values[i]-meanval) ** 2 for i in values)/len(values)
i
逐个获取
values
中每个元素的值。然后将其用作
values[i]
中的索引,但它应该是
i

因此:

return sum((i-meanval) ** 2 for i in values)/len(values)


有什么特别的原因不能使用
统计
模块吗?可能应该是
sum((i-meanval)**2 for i in values)/len(values)
这是不允许的。我会在
variance()
std()
的签名中添加可选参数
mean
。如果事先计算平均值,可以节省时间。官方python模块就是这样做的。或者干脆
返回平均值([(i-meanval)**2表示i值]
是的,甚至更好!
return mean([(i-meanval) ** 2 for i in values])