-2

我正在尝试构建一个函数来计算给定数字的平均值。数字可以是元组格式:(1, 2, 3)或列表格式:[1, 2, 3]

现在我想出了这个:

def get_mean(*arg):
   for x in arg:           ### Calculating sum
      sum = float(sum) + x
   count = len(arg)
   mean = float(sum) / int(count)
   return mean

然后,如果我尝试使用以下属性调用此函数:

print get_mean(1, 2, 3)

输出将是:2.0 但随后:

print get_mean[1, 2, 3]

输出错误:TypeError: 'function' object has no attribute '__getitem__'

为什么会这样?

4

2 回答 2

3

您使用错误的语法传递参数,您错过了括号

print get_mean[1, 2, 3]

TypeError: unsupported operand type(s) for +: 'float' and 'list'但是,如果您使用它,您会遇到 a ,因为args[[1, 2, 3]]

print get_mean([1, 2, 3])

因此你需要解包列表,所以只需使用*运算符

print get_mean(1, 2, 3)
print get_mean(*[1, 2, 3])
#2.0
#2.0
于 2013-11-01T14:25:16.657 回答
-1

我可能在这里遗漏了一些东西,但是您是否有理由不只是将数据作为元组或列表传递,例如

from __future__ import division

def get_mean(nos):
    return sum(nos) / len(nos)

#test
t = (1, 2, 3, 4)
print get_mean(t)
l = [1, 2, 3, 4]
print get_mean(l)

如果from __future__ import division您在 python 2.x 上,自动将整数转换为浮点数进行除法(在 python 3.x 中自动完成)

于 2013-11-01T14:31:59.777 回答