Soma elementos na lista python apenas se os elementos em uma lista booleana separada forem True

Eu tenho duas listas python,

A = [ 1, 2, 3, 4, 5 ]
B = [ True, False, False, True, True ]

As listas A e B têm o mesmo comprimento.

Eu quero somar os elementos em A que correspondem aos elementos True em B. Eu sei que posso fazer isso com algo como:

sum([A[x] for x in xrange(len(A)) if B[x]])

mas eu queria saber se havia uma solução mais elegante que não envolvesse loop sobre elementos em cada lista?