Сума / Середнє значення атрибута списку об’єктів


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

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потрібне початкове значення.


0

Використовуйте вбудований statisticsмодуль:

import statistics

statistics.mean((o.val for o in my_objs))
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.