Сумма / Среднее значение атрибута списка объектов


82

Допустим, у меня есть класс Cс атрибутом a.

Как лучше всего получить сумму aиз списка Cв Python?


Я пробовал следующий код, но знаю, что это неправильный способ:

for c in c_list:
    total += c.a

Ответы:


182

Используйте выражение генератора :

sum(c.a for c in c_list)

Мне нравится простота, но, похоже, она занимает вдвое меньше времени (c1.A + c2.A + c3.A) примерно для 10 элементов, где cA - это число с плавающей запятой.
jcomeau_ictx 06

9

Если вы ищете другие меры, кроме суммы, например среднее / стандартное отклонение, вы можете использовать NumPy и сделать:

mean = np.mean([c.a for c in c_list])
sd = np.std([c.a for c in c_list])

4

У меня была аналогичная задача, но моя заключалась в суммировании продолжительности времени в качестве вашего атрибута c.a. Объединив это с другим заданным здесь вопросом , я придумал

sum((c.a for c in cList), timedelta())

Потому что, как указано в ссылке, sumтребуется начальное значение.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.