TypeError:“函数”对象不可下标,矢量

时间:2019-03-11 20:28:53

标签: python

import math
def stats(a):
    mean = sum(a)/len(a)
    var = sum(pow(x-mean,2) for x in a) / len(a)
    std  = math.sqrt(var)
    return (mean, var, std)
print(stats[1,2,3,4,5,6,7,8,9])

我在做什么错?我想创建一个显示均值,var和std的函数而不使用已经存在的python函数,并且创建向量时遇到麻烦。你能帮我吗?

2 个答案:

答案 0 :(得分:1)

您需要遵守Python的函数调用约定。 @JBernardo指出了这一点,其他人也指出了(Granny Aching):您正在尝试使用[pram1, param2...]

调用该函数

请参见Python tutorial

  

关键字def引入函数定义。必须遵循   通过函数名称和形式参数的括号列表

我承认该页面并未明确告知调用行为与声明相同。但是,它包含许多填补这一空白的示例。

大多数时候,我更喜欢初学者明确地编写代码:

import math
def stats(a : list): # explicitly ask for a list for a
    mean = sum(a)/len(a)
    var = sum(pow(x-mean,2) for x in a) / len(a)
    std  = math.sqrt(var)
    return (mean, var, std)
my_list = [1,2,3,4,5,6,7,8,9] # its a list
mean,var,std= stats(my_list)
print('Mean:{}, var:{}, std:{}'.format(mean,var,std))

答案 1 :(得分:0)

在最后一行的打印语句中,您具有:stats[1,2,3,4,5,6,7,8,9]

括号[]用于下标(例如,从列表,字符串或字典中选择元素)

使用函数时,需要包括括号。您是说stats([1,2,3,4,5,6,7,8,9])吗?