尝试在类中创建一个方法来计算python中人员列表的平均年龄

时间:2013-04-23 13:21:18

标签: python class methods mean

我正在尝试在类中创建一个方法来计算python中列表的平均年龄。 基本上,假设我有一个名为peoplelist的不同人名单,peoplelist中的每个人都有(身高,年龄,性别)的格式,例如person1 = 1.77,27,m。我需要在列表中获取每个人年龄的总和,然后将其除以列表的长度并返回结果。 到目前为止,我有:

def __len__(self):
    return len(self.peoplelist)

def __age__(self):
    agesum = 0
    for value in self.peoplelist:
        agesum = agesum + value.age
        print(agesum)
    return agesum/len(self.peoplelist)

然而,这似乎不起作用,任何帮助或解释为什么这不起作用将不胜感激。

3 个答案:

答案 0 :(得分:0)

假设value.age返回正确的值,以下内容应该有效......

def __age__(self):
    agesum = 0
    for value in self.peoplelist:
        agesum = agesum + value.age
    return agesum / len(self.peoplelist)

如果没有,您将必须包含您在原始问题中如何调用该函数的代码。

答案 1 :(得分:0)

您可以使用sum()功能:

def age(self):
    return sum(p.age for p in self.peoplelist) / float(len(self.peoplelist))

注意float();在Python 2中,除了整数,默认情况下会给你 floor 除法(舍入)。或者,在python代码的顶部添加from __future__ import division以启用浮点除法。

请注意,我将方法命名为.age();仅对special method names使用双下划线名称(“dunder”)。

答案 2 :(得分:0)

如果你的self.peoplelist如下所示:

[(1.77, 27, 'm'), ...]

然后应该工作:

def __len__(self):
    return len(self.peoplelist)

def __age__(self):
    agesum = 0
    for value in self.peoplelist:
        agesum = agesum + value[1]
        print(agesum)
    return agesum/len(self.peoplelist)