Python - TypeError:float()参数必须是字符串或数字,而不是'列表

时间:2016-09-07 11:17:36

标签: python python-3.x

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

3 个答案:

答案 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]