【问题标题】: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

【问题讨论】:

    标签: python list attributes sum


    【解决方案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))
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-02-03
          • 1970-01-01
          • 2014-05-10
          • 1970-01-01
          • 1970-01-01
          • 2019-04-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多