如何使用列表作为参数编写函数

时间:2016-09-27 00:06:33

标签: python

这是一个问题,我正在尝试定义一个函数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))

2 个答案:

答案 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:,然后您将值添加到您的平均变量。将其除以列表中的值数并打印结果。