【发布时间】:2012-09-23 09:36:41
【问题描述】:
我是 Python 新手,所以请耐心等待我的幼稚问题。
我想编写一个函数,它接受一个数字向量并计算它们的平均值。所以我写了一个小函数为
def my_mean(*args):
if len(args) == 0:
return None
else:
total = sum(args)
ave = 1.0 * total / len(args)
return ave
my_mean(1, 2, 3)
2.0
但如果参数是数字列表,此函数将不起作用。例如,
my_mean([1, 2, 3])
Traceback (most recent call last):
File "/usr/lib/wingide-101-4.1/src/debug/tserver/_sandbox.py", line 1, in <module>
# Used internally for debug sandbox under external interpreter
File "/usr/lib/wingide-101-4.1/src/debug/tserver/_sandbox.py", line 21, in my_mean
TypeError: unsupported operand type(s) for +: 'int' and 'list'
我知道NumPy 有一个函数numpy.mean,它接受一个列表作为参数,但不像my_mean 那样接受一个数字向量。
我想知道是否有办法让my_mean 在这两种情况下都工作?所以:
my_mean(1, 2, 3)
2.0
my_mean([1, 2, 3])
2.0
就像min 或max 函数一样?
【问题讨论】: