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

试图在类中创建一个方法来计算python中人员列表的平均年龄,python,class,methods,mean,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

我试图在类中创建一个方法,用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)

然而,这似乎不起作用,任何帮助或解释这不起作用的原因都将不胜感激。

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

def __age__(self):
    agesum = 0
    for value in self.peoplelist:
        agesum = agesum + value.age
    return agesum / len(self.peoplelist)
如果没有,您必须在原始问题中包含如何调用函数的代码。

您可以使用
sum()
函数:

def age(self):
    return sum(p.age for p in self.peoplelist) / float(len(self.peoplelist))
注意
float()
;在Python2中,默认情况下,整数的除法为底数除法(向下舍入)。或者,在python代码的顶部添加来自uuu future uuu import division的
,以启用浮点除法


注意,我将方法命名为
.age()
;如果您的self.peoplelist如下所示,则仅对.

使用双下划线名称(“dunder”):

[(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)

它以什么方式失败?此外,将其命名为
\uuuu age\uuuu
也不是一个好主意(只需
age
就可以了)。该格式的双下划线名称保留给python用于特殊用途。既然是这样,阅读类的API的人可能会有点困惑。你能分享一下错误吗?或者您没有得到预期的输出?一个变量
depthsum
似乎应该是
agesum
。你能检查一下吗?我不认为它存储为元组,当我测试它时,value.age会返回age整数。当我在pythonshell中手动输入for循环时,它就工作了,而当我尝试在程序中执行该方法时,它就不工作了。可能是我执行的方法不对吗?