Spearman秩相关类型错误:“int”对象不可调用

2024-06-25 05:32:52 发布

您现在位置:Python中文网/ 问答频道 /正文

studlst = [['ABDIHAFITH', 8, 16, 19, 20, 3, 25, 16, 2, 9], ['ADAM', 12, 9, 17, 24, 13, 6, 15, 13, 30]

spearman = []

    dsquare = 0.0
    count = 0
    i = 0

    while i < len(studlst):
        dsquare += (studlst[i][1] - studlst[i][count+2])**2
        i += 1
        if i == len(studlst):
            count += 1
            spear = 1-((6*dsquare)/(len(studlst)(len(studlst)**2-1)))
            spearman.append(spear)
            if len(spearman) == (len(studlst[0])-2):
                break
            i = 0
            dsquare = 0

我一直收到错误“TypeError:“int”对象不可调用”。对于创建矛值的行(精子等级相关性)。我尝试将该行上的两个len(studlst)转换为float,但用int替换float时返回相同的错误。我该怎么办?谢谢

编辑: 这个问题源于错误的语法,应该乘以len(studlst)和括号


Tags: lenifcount错误floatintbreakappend
2条回答

在代码中,部分(len(studlst)(len(studlst)**2-1))

计算结果为int(some_value),因为(len(studlst)将给您一个int,而(len(studlst)**2-1)将是一些值

因此,您将int(some_value)作为代码的最终产品,这意味着您将int视为某种函数,并使用类似的值调用它

foo(x): pass

然后foo(0)

这就是问题的根源。如果您打算乘法,则将等式更改为(len(studlst) * (len(studlst)**2-1))

这一部分看起来有问题:

len(studlst)(len(studlst)**2-1)

len生成一个int,下面的括号表达式被解析为调用

如果您打算购买产品,请使用*运算符:

len(studlst) * (len (studlst)**2 - 1)

相关问题 更多 >