【问题标题】:"Float object is not iterable"?“浮动对象不可迭代”?
【发布时间】:2014-03-16 06:42:41
【问题描述】:

我写了一个函数来计算一个列表的标准差:

def avg(L):
    return sum(L)/len(L)

def stdDev(L):
    for i in range(len(L)-1):
        return sqrt((sum(L[i]-avg(L)))**2)/len(L))

如果我运行它并向 Shell 提供输入 [20,10,30],它会显示“浮动对象不可迭代”。问题出在哪里,我可以在不满足这两个函数的整数结果的情况下解决它吗?

【问题讨论】:

    标签: python iterable


    【解决方案1】:

    sum(L[i]-avg(L)) - 这里有一个浮点数。

    你在循环的每一次循环中都有 return 语句,这显然是错误的。

    标准差的公式也不正确,因为您放错了大括号。

    我相信你想要的:

    def stdDev(L):
        s = 0
        for i in range(len(L)):
            s += (L[i] - avg(L))**2
        return sqrt(s/len(L))
    

    遍历元素比遍历它们的索引更好:

        for x in L:
            s += (x - avg(L))**2
    

    def stdDev(L):
        ave = avg(L)
        s = sum((x - ave)**2 for x in L)
        return sqrt(s/len(L))
    

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 1970-01-01
      • 2011-12-28
      • 2018-05-15
      • 1970-01-01
      • 2021-03-01
      • 2021-05-16
      • 2014-03-24
      • 1970-01-01
      相关资源
      最近更新 更多