2013-09-05 3 views
1

클래스 객체의 목록에서 클래스 객체의 인스턴스 변수를 합산하려고합니다.클래스 객체의 인스턴스 변수 추가하기

Class A(object): 

    def __init__(self): 
     self.a = 20 

B = [] 
for i in range(10): 
    B.append(A()) 

# Can this be made more pythonic? 
sum = 0 
for i in B: 
    sum += i.a 

지도 기능을 사용하여 줄을 생각하고 있었습니까? 그것이 너무 많이 추진하는지 모르겠다. 그냥 궁금해서.

+2

'sum (i는 B에서 i)'(참조 : [list comprehensions]에 대한 자습서 (http://docs.python.org/2/tutorial/datastructures.html#list-comprehensions) 및 [생성자 표현식 ] (http://docs.python.org/2/tutorial/classes.html#generator-expressions) – millimoose

+1

(필자가 "파이썬"이라는 용어를 악용하는 것을 싫어하는만큼, 나는 목록 내포가 분명히 더 많은 것이라고 주장 할 것이다. – millimoose

+0

@ millimoose .. 이것은 실제로 'int'객체가 호출 할 수 없다는 TypeError를 주려고합니다. – Nitin

답변

2

당신은 이해

sum([i.a for i in B]) 
+0

잘 작동합니다. 감사! – Nitin

3
class A(object): 

def __init__(self): 
    self.a = 20 

B = [] 
for i in range(10): 
    B.append(A()) 

s = sum(i.a for i in B) 

print s 

작품 reduce

reduce(lambda acc, c: acc + c, [i.a for i in B]) 

또는 sum()를 사용할 수 있습니다.

관련 문제