web-dev-qa-db-fra.com

Somme / moyenne un attribut d'une liste d'objets

Disons que j'ai la classe C qui a l'attribut a.

Quelle est la meilleure façon d'obtenir la somme de a à partir d'une liste de C en Python?


J'ai essayé le code suivant, mais je sais que ce n'est pas la bonne façon de le faire:

for c in c_list:
    total += c.a
61
jsj

Utilisez une expression de générateur :

sum(c.a for c in c_list)
141
phihag

J'ai eu une tâche similaire, mais la mienne consistait à additionner une durée comme attribut c.a. En combinant cela avec une autre question posée ici , je suis venu avec

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

Parce que, comme mentionné dans le lien, sum a besoin d'une valeur de départ.

3
Bill Kidd

Si vous recherchez d'autres mesures que la somme, par ex. moyenne/écart type, vous pouvez utiliser NumPy et faire:

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