python 3.5 TypeError:'list'对象不可调用

时间:2016-11-21 02:46:02

标签: python list mode

listg = [1,2,3,4,4,5,2]


modeval = [0]
modetimes = [0]

for i in range(len(listg)):
    count = listg.count(listg(i))
    if count > modetimes[0]:
        modeval = [listg(i)]
        count = [modeval]

    elif count == modetimes[0]:
        if listg in modeval:
            modeval.remove[listg(i)]
    modeval.append[listg(i)]

mode = modeval

print (mode)

我试图在不使用lambdas或模式函数的情况下找到列表的模式,但每当我在

中使用圆括号时
count = listg.count(listg(i))

modeval = [list(i)]

我得到TypeError:'list'对象不可调用。我尝试将i周围的方括号转换成圆形但是当我这样做时,打印的数字是列表中的最后一个。

1 个答案:

答案 0 :(得分:2)

您需要使用括号进行索引:将listg(i)更改为listg[i]。回溯表示,括号用于函数/方法调用。

另外,我对你想要完成的事情感到有点困惑,但我认为在这种情况下使用for i in range(len(listg)):通常被认为是一种Python反模式。您可以通过直接遍历列表中的值来创建"beautiful, idiomatic Python",而不是使用索引:

for i in listg:
    count = listg.count(i)
    if count > modetimes[0]:
        modeval = [i]
        count = [modeval]

...

此处i将是来自listg的实际元素,而不是用于检索元素的索引。

另请注意,分配给方括号中的单个对象(例如modeval = [0])将为您提供单项列表。如果这就是你想要的那么好,但如果这不是你的意图,它可能会导致令人困惑的结果。