对对象列表的属性求和/平均
Posted
技术标签:
【中文标题】对对象列表的属性求和/平均【英文标题】:Sum / Average an attribute of a list of objects 【发布时间】:2012-06-08 10:35:30 【问题描述】:假设我有一个类 C
,它具有属性 a
。
从 Python 中的 C
列表中获取 a
总和的最佳方法是什么?
我已经尝试了以下代码,但我知道这不是正确的做法:
for c in c_list:
total += c.a
【问题讨论】:
【参考方案1】:使用generator expression:
sum(c.a for c in c_list)
【讨论】:
我喜欢这种简单性,但对于 c.A 是浮点数的大约 10 个元素来说,它的时间似乎是 (c1.A + c2.A + c3.A) 的一半。【参考方案2】:如果您正在寻找除 sum 之外的其他度量,例如均值/标准差,您可以使用 NumPy 并执行以下操作:
mean = np.mean([c.a for c in c_list])
sd = np.std([c.a for c in c_list])
【讨论】:
【参考方案3】:我有一个类似的任务,但我的任务是将持续时间相加作为您的属性c.a
。
将此与here 提出的另一个问题结合起来,我想出了
sum((c.a for c in cList), timedelta())
因为,如链接中所述,sum
需要一个起始值。
【讨论】:
【参考方案4】:使用内置statistics
模块:
import statistics
statistics.mean((o.val for o in my_objs))
【讨论】:
以上是关于对对象列表的属性求和/平均的主要内容,如果未能解决你的问题,请参考以下文章