Python新手在这里。我试图操作包含浮点数的列表。 avg
是从其他方法返回的列表参数。但是,当我尝试执行以下操作时,它会抛出一个错误,即float()应该有一个字符串或数字而不是列表。 avg1
应该包含浮点数而不是列表的列表副本吗?我尝试了一些我在其他帖子上阅读的类似标题的编辑,但无法解决这个问题。
刚开始这么好心告诉我哪里出错了。
def movingavg(EMA,avg):
EMA=[]
avg1 = [float(i) for i in avg]
EMA[:3] = avg1[:3]
for i,j in zip(EMA[2:],avg1[3:]):
a =float(i)*0.67 + float(j)*0.33
EMA.append(a)
return EMA
我得到的错误如下:
avg1 = [float(i) for i in avg]
TypeError: float() argument must be a string or a number, not 'list'
使用Python 3.4
答案 0 :(得分:0)
请检查avg的返回类型我认为它的返回类型是列表的列表。
答案 1 :(得分:0)
而不是avg1 = [float(i) for i in avg]
使用下面的代码。
avg1 = []
for i in avg:
for j in i:
avg1.append(float(j))
或者可以使用下面的列表理解。
avg1 = [float(i) for val in avg for i in val]
答案 2 :(得分:0)
要将列表列表转换为float,您需要使用两个列表推导,如下所示:
avg1 = [[float(i) for i in val] for val in avg]