如何对列表中类对象的指定属性求和?以Dog类年龄为例
计算类对象列表中指定属性的总和
针对你的场景,完全不用手动累加,Python有非常简便的方法批量计算类对象属性的总和,下面是两种最常用的方案:
方案一:生成器表达式 + sum()函数
这是最直观且高效的写法,直接遍历列表中的每个Dog对象,提取age属性传入sum()求和:
修改后的main.py代码如下:
import dogs as d dogs = [d.baba, d.jojo] # 一行代码算出所有狗狗的年龄总和 total_age = sum(dog.age for dog in dogs) dogs_age_average = round(total_age / len(dogs))
不管列表里有多少个Dog对象,这个写法都会自动遍历所有元素,完全不用手动逐个索引调用。
方案二:map()函数 + sum()函数
如果你习惯函数式编程风格,可以用map()批量提取每个对象的age属性,再传入sum():
import dogs as d dogs = [d.baba, d.jojo] total_age = sum(map(lambda dog: dog.age, dogs)) dogs_age_average = round(total_age / len(dogs))
这个方案和第一种效果完全一致,只是写法不同。
内容的提问来源于stack exchange,提问作者Simon Choi
相关产品推荐
相关产品推荐

