Suma elementos en la lista de Python solo si los elementos en una lista booleana separada son Verdaderos

Tengo dos listas de python,

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

Las listas A y B tienen la misma longitud.

Quiero sumar solo los elementos en A que corresponden a elementos verdaderos en B. Sé que puedo hacer eso con algo como:

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

pero me preguntaba si había una solución más elegante que no implicara recorrer elementos en cada lista.

Respuestas a la pregunta(3)

Su respuesta a la pregunta