0

我正在尝试在类中创建一个方法来计算 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)

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

4

3 回答 3

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)
于 2013-04-23T13:35:41.083 回答
0

假设value.age返回正确的值,以下应该工作......

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

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

于 2013-04-23T13:29:50.343 回答
0

您可以使用以下sum()功能:

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

注意float(); 在 Python 2 中,整数除法默认为您提供地板除法(向下舍入)。或者,from __future__ import division在 python 代码的顶部添加以启用浮点除法。

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

于 2013-04-23T13:33:22.223 回答