Python计算平均值

img


为啥index out of range了呢不太理解麻烦解答一下谢谢

每个人的成绩只有3个值,但是求平均值的下标却用了0/1/2/3共4个。要么改原始数据增加一个值,要么计算平均值时只计算3个值。还有个问题,最后那个人的成绩用了小数点实际只有2个值。

列表里只有3个数字,而你却调用4个,s[si][3]肯定出错啊

首先,这个s是个字典,那么for si in s就是在遍历字典的键(就是小李小张那个)。键对应的值是一个长度都为3的list,你仔细看看,那么你用了s[si][3],就是超过了,最多只能用0,1,2。
优化如下:

s = {"a":[1,1,1],"b":[2,2,2],"c":[3,3,3],"d":[4,4,4]}
s_avg = [0,0,0]
for si in s.values():
    s_avg[0] += si[0]
    s_avg[1] += si[1]
    s_avg[2] += si[2]
s_avg = [i/4 for i in s_avg]
print(s_avg)