Добавление переменных экземпляра объекта класса

Я хочу суммировать переменную экземпляра объекта класса в списке этого объекта класса.

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 ответа

Решение

Ты можешь использовать reduce

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

или же sum() с пониманием

sum([i.a for i in B])
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

работает.

Другие вопросы по тегам