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

新手上路,请多包涵

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

原文由 Sastry Gosukonda 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
1 个回答

而不是 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]

原文由 Dinesh Pundkar 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题