Aquí esta tu código corregido
Código Python:
Ver originaldef function2():
val = [[0]*size for i in range(csize)]
for i in range(csize):
aux = [] #Esto estaba mal
for j in range(size):
val[i][j] = b[i][j] * c[j]
aux.append(val[i][j])
aux2=sum(aux) #Lo tenias dentro del for j, cuando debería estar afuera
print aux2
print val
Edito: Veo que tienes un buen "Pythonic level" sigue asi.
Aquí esta tu código, pero mejorado:
Código Python:
Ver originaldef fun1(l1, l2):
#Asumo que l1 y l2 son de la misma longitud
size = len(l1)
aux = [l1[i] * l2[i] for i in xrange(size)]
return sum(aux), aux
def fun2(l1, l2):
#l1 es la lista de listas y l2 es c
vals = [fun1(i, l2) for i in l1]
print vals
a = [3, 2, -5, -2, 3]
b = [[1, 1, 1, 2, 1], [7, 0, 3, -4, 3], [11, -6, 0, 3, -3]]
c = [0, 1, 0, 1, 0]
fun2(b, c)
Veo que tienes un buen "Pythonic level" sigue asi