python 3.5 TypeError: 'list' object is not callable
python 3.5 TypeError: 'list' object is not callable
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)
我试图在不使用 lambda 或模式函数的情况下找到列表的模式,但是每当我在
中使用圆括号时
count = listg.count(listg(i))
和
modeval = [list(i)]
我收到类型错误:'list' 对象不可调用。我尝试将 i 周围的方括号变成圆括号,但是当我这样做时,打印的数字是列表中的最后一个。
您需要用括号索引:将 listg(i)
更改为 listg[i]
。括号用于 function/method 调用,如回溯所示。
另外,我对你想要完成的事情有点困惑,但我认为在这种情况下使用 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]
,将为您提供一个单项列表。如果那是你想要的那很好,但如果那不是你的意图,它可能会导致混乱的结果。
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)
我试图在不使用 lambda 或模式函数的情况下找到列表的模式,但是每当我在
中使用圆括号时count = listg.count(listg(i))
和
modeval = [list(i)]
我收到类型错误:'list' 对象不可调用。我尝试将 i 周围的方括号变成圆括号,但是当我这样做时,打印的数字是列表中的最后一个。
您需要用括号索引:将 listg(i)
更改为 listg[i]
。括号用于 function/method 调用,如回溯所示。
另外,我对你想要完成的事情有点困惑,但我认为在这种情况下使用 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]
,将为您提供一个单项列表。如果那是你想要的那很好,但如果那不是你的意图,它可能会导致混乱的结果。