取一个切片列表的平均值

时间:2018-02-08 16:25:06

标签: python list sum moving-average

我遇到的问题是试图取我的列表的平均值(从y得到,这是一个sin值列表)。但是,在运行代码时,我收到错误

TypeError:float()参数必须是字符串或数字,而不是' list'

非常感谢您提供的任何帮助

for k in range(len(y)-1-r):

    list_to_avg = [y[r+k:len(y)-1-r+k]]
    b =float(sum(list_to_avg, []))
    a =float(len(list_to_avg))
    z.append(b/a)

2 个答案:

答案 0 :(得分:0)

您已将list_to_avg列为包含列表的列表。

使用

list_to_avg = y[r+k:len(y)-1-r+k]

代替。

答案 1 :(得分:0)

改变这个:

b = float(sum(list_to_avg, []))

到此:

b = float(sum(list_to_avg))

您要求sum将空列表([])添加到list_to_avg的任何内容中。

由于行b = float(sum(list_to_avg, []))没有投掷:

  

TypeError:只能连接列表(不是“无论 1 ”)到列表

这意味着list_to_avg是一个列表列表。我不知道这是否是有意的,所以我认为是。但如果是,则求和的结果也是list,当然不能转换为float,因此:

  

TypeError:float()参数必须是字符串或数字,而不是'list'

1 无论是我的。例如,如果您有sum([1, 2, 3], []),则会说TypeError: can only concatenate list (not "int") to list