这是一个问题,我正在尝试定义一个函数sample_mean
,它将一个数字列表作为参数,并返回该列表中数字的样本均值。这是我到目前为止所做的,但我不确定它是完全正确的。
def sample_mean(list):
""" (list) -> number
takes in a list of numbers as a parameter and returns the sample mean of the the numbers in that list
sample_mean =
sample_mean =
"""
mean = 0
values = [list]
for list in values:
print('The sample mean of', values, 'is', mean(list))
答案 0 :(得分:1)
首先,不要使用list
作为名称,因为它会为声明它的作用域隐藏/隐藏内置list
类。使用描述列表中值的名称,在这种情况下samples
可能是一个好名字。该功能可以通过以下方式实现:
def sample_mean(samples):
total = 0
for value in samples:
total = total + value
return total / float(len(samples))
或者是一个较短的版本,可以避免使用Python的sum()
函数编写自己的循环:
def sample_mean(samples):
return sum(samples) / float(len(samples))
像这样调用函数:
>>> print(sample_mean([1,2,3,4,5]))
3.0
注意使用float()
来确保除法运算不会丢失小数部分。这只是Python 2中的一个问题,默认情况下使用整数除法。或者,您可以将其添加到脚本的顶部:
from __future__ import division
如果您确定只需要支持Python 3,则可以删除float()
并忽略上述内容。
答案 1 :(得分:0)
如上所述@idjaw,请不要使用list
作为参数,而是使用listr
(例如)。你的values = [list]
是错误的(也由@idjaw说明),应该删除。
此外,根据PEP257,您不应在文档字符串中使用"(list) -> number"
,因为它只应用于内置函数。
最后,您的循环应该看起来像for l in listr:
,然后您将值添加到您的平均变量。将其除以列表中的值数并打印结果。