【问题标题】:Taking the average of a sliced list取切片列表的平均值
【发布时间】:2023-04-04 19:24:01
【问题描述】:

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

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

如果您能提供任何帮助,我们将不胜感激

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)

【问题讨论】:

  • 也有助于提供示例输入。请使用tour 并阅读How to Ask 以获取有关提高此问题质量的提示。正如目前所问的,这不是很好。
  • 在没有更多信息的情况下无法确定,但我相信您的错误在这一行 list_to_avg = [y[r+k:len(y)-1-r+k]]。尝试删除外部方括号。您将获得当前编写的列表列表。它还有助于在调试时打印中间变量。

标签: python list sum moving-average


【解决方案1】:

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

使用

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

改为。

【讨论】:

    【解决方案2】:

    改变这个:

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

    到这里:

    b = float(sum(list_to_avg))
    

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


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

    TypeError: 只能将列表(不是“whatever1”)连接到列表

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

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


    1随便都是我的。例如,如果你有sum([1, 2, 3], []),它会说TypeError: can only concatenate list (not "int") to list

    【讨论】:

      猜你喜欢
      • 2021-09-13
      • 2018-12-13
      • 2022-06-14
      • 1970-01-01
      • 2019-03-30
      • 2013-08-23
      • 2014-04-03
      • 1970-01-01
      • 2019-12-03
      相关资源
      最近更新 更多