Suma de múltiples listas de listas de sabios

Considera que tengo una lista de listas como:

[[5, 10, 30, 24, 100], [1, 9, 25, 49, 81]] [[15, 10, 10, 16, 70], [10, 1, 25, 11, 19]] [[34, 20, 10, 10, 30], [9, 20, 25, 30, 80]] 

Ahora quiero la sum de todos los índices del índice de la primera lista y luego la segunda lista 5+15+34=54 10+10+20=40 y así sucesivamente como:

 [54,40,50, 50,200], [20,30,75,90,180] 

Lo intenté:

 for res in results: print [sum(j) for j in zip(*res)] 

Aquí los results es la lista de listas. Pero da la sum de cada elemento de la lista como:

 [6,19,55,73,181] [25,11,35,27,89] [43,40,35,40,110] 

Usted es casi correcto, necesita desempaquetar los results y comprimirlo también.

 >>> data = [[[5, 10, 30, 24, 100], [1, 9, 25, 49, 81]], ... [[15, 10, 10, 16, 70], [10, 1, 25, 11, 19]], ... [[34, 20, 10, 10, 30], [9, 20, 25, 30, 80]]] >>> for res in zip(*data): ... print [sum(j) for j in zip(*res)] ... [54, 40, 50, 50, 200] [20, 30, 75, 90, 180] 

Simplemente puede escribir esto con la lista de comprensión como

 >>> [[sum(item) for item in zip(*items)] for items in zip(*data)] [[54, 40, 50, 50, 200], [20, 30, 75, 90, 180]] 

Esto es mucho más fácil si usas Numpy:

 import numpy as np data = [[[5, 10, 30, 24, 100], [1, 9, 25, 49, 81]], [[15, 10, 10, 16, 70], [10, 1, 25, 11, 19]], [[34, 20, 10, 10, 30], [9, 20, 25, 30, 80]]] a = np.array(data) print a.sum(axis=0) 

Salida:

 [[ 54, 40, 50, 50, 200], [ 20, 30, 75, 90, 180]] 

Similar:

 In [5]: a.sum(axis=1) Out[5]: array([[ 6, 19, 55, 73, 181], [ 25, 11, 35, 27, 89], [ 43, 40, 35, 40, 110]]) In [6]: a.sum(axis=2) Out[6]: array([[169, 165], [121, 66], [104, 164]]) In [7]: a.sum() Out[7]: 789 

También puedes usar map() , en su lugar.

 a = [[5, 10, 30, 24, 100], [1, 9, 25, 49, 81]] b = [[15, 10, 10, 16, 70], [10, 1, 25, 11, 19]] c = [[34, 20, 10, 10, 30], [9, 20, 25, 30, 80]] results = [] for i in range(0, max(len(a), len(b), len(c))): results.append(map(lambda x, y, z: x + y + z, a[i], b[i], c[i])) for result in results: for i in result: print(i) 

Pero esto es innecesariamente largo y la respuesta de @ thefourtheye es mejor.