Ver Mensaje Individual
  #3 (permalink)  
Antiguo 25/09/2010, 22:14
Ania_
 
Fecha de Ingreso: septiembre-2010
Mensajes: 18
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Multiplicación en listas

Bueno, ocurre que lo q estoy haciendo es traspasar el codigo en C++ a Python

De todas maneras despues de cabecear harto, he logrado hacer algunas cosas mas...lo que te he dado son partes de codigo y a lo mejor falta informacion, lo que necesito es lo siguiente:
Tengo 2 listas
a=[3,2,-5,-2,3]
b=[[1,1,1,2,1],[7,0,3,-4,3],[11,-6,0,3,-3]]

y debo multiplicarlas por otra lista que para este ejemplo será:
c=[0,1,0,1,0]
Para la multiplicacion de a con b, tengo el siguiente codigo:
Código Python:
Ver original
  1. a=[3,2,-5,-2,3]
  2. b=[[1,1,1,2,1],[7,0,3,-4,3],[11,-6,0,3,-3]]
  3. c=[0,1,0,1,0]
  4. size=5
  5. csize=3
  6.  
  7. def sumar(x,y):
  8.     return x+y
  9.  
  10. def funcion1():
  11.     aux=[0]*size
  12.     for i in range(size):
  13.         aux[i]=a[i]*c[i]
  14.     aux2=reduce(sumar,aux)
  15.     print aux
  16.     print aux2
  17.  
  18. funcion1()

El resultado de la nueva lista=[0, 2, 0, -2, 0] y la suma de todos sus indices es 0

Ahora para la multiplicación de b con c, tengo problemas, ya que es una lista de listas, si bien la multiplicacion me resulta al sumar no sé como hacerlo, porque debo sumar el primer indice de la lista q es una lista y esa me arroja un resultado, luego con la siguiente y asi sucesivamente
tengo esto:
Código Python:
Ver original
  1. a=[3,2,-5,-2,3]
  2. b=[[1,1,1,2,1],[7,0,3,-4,3],[11,-6,0,3,-3]]
  3. c=[0,1,0,1,0]
  4. size=5
  5. csize=3
  6. def sumar(x,y):
  7.     return x+y
  8. def funcion2():
  9.    
  10.    
  11.     val=[[0]*size for i in range(csize)]
  12.     aux=[]
  13.     for i in range(csize):
  14.         for j in range(size):
  15.             val[i][j]=b[i][j]*c[j]
  16.             aux.append(val[i][j])
  17.             aux2=reduce(sumar,aux)
  18.         print aux2
  19.  
  20.     print val    
  21.            
  22.            
  23. funcion2()

Lo que me tira es la lista val=[[0, 1, 0, 2, 0], [0, 0, 0, -4, 0], [0, -6, 0, 3, 0]]
y los valores 3,-1,-4 , pero lo que realmente debe salir es 3,-4,-3, obviamente el procedimiento q estoy haciendo esta malo, porque esta sumando toda la lista, lo mismo que hace en la primera funcion, el problema es q no sé como hacer

Espero q ahora haya quedado más claro :S