我正在尝试在类中创建一个方法来计算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)
然而,这似乎不起作用,任何帮助或解释为什么这不起作用将不胜感激。
答案 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)