我遇到的问题是试图取我的列表的平均值(从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)
答案 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