2012-06-04 8 views
39

Diciamo che ho classe C che ha attributo a.Somma/Media un attributo di un elenco di oggetti in Python

Qual è il modo migliore per ottenere la somma di a da un elenco di C in Python?

+0

probabilmente meglio usare 'minuscolo', quindi' a' invece di 'A' – jamylak

+0

http://whathaveyoutried.com/ – Marcin

+2

@Marcin per c in c_list; totale + = c.a; ma so che non è il modo giusto per farlo, non ho bisogno di sentirmi dire. – jsj

risposta

97

Utilizzare un generator expression:

sum(c.A for c in c_list) 
+0

non posso accettare per altri 12 minuti :) – jsj

+5

La semplicità è bella:] – invert

+0

Per ottenere più attributi di somma, c'è qualche modo breve? somma (c.A per c in c_list) sum (c.B per c in c_list) sum (c.C per c in c_list) questo ha implicazioni sulle prestazioni? –

2

ho avuto un compito simile, ma la mia coinvolto sommare una durata di tempo come l'attributo C.A. Combinando questo con un'altra domanda posta here, mi si avvicinò con

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

Perché, come accennato nel link, somma ha bisogno di un valore di partenza.

Problemi correlati