2015-11-29 4 views
3
score=[ 
['5.00', '4.30', '2.50', '3.60', '1.30', '5.00'], 
['80.00', '8.00', '32.00', '13.60', '20.00', '80.00'], 
['12.00', '6.00', '7.20', '8.40', '9.60', '12.00'], 
['3.00', '1.20', '2.04', '1.08', '0.84', '3.00'] 
] 

Я хочуSum все элементы, имеющие одинаковый индекс в различных списках

a = 5 + 80 + 12 + 3 # add first element of all lists in score 
b = 4.3 + 8 + 6 + 1.2 # add second element of all lists in score 
c = 2.5 + 32 + 7.2 + 2.04 # etc ... 
d = 3.6 + 13.6 + 8.4 + 1.08 # ... 
e = 1.3 + 20 + 9.6 + 0.84 
f = 5 + 80 + 12 + 3 

Но я не знаю, сколько списки в score, поэтому я не могу использовать zip(). Как суммировать все элементы, имеющие один и тот же индекс в разных списках в python?

+0

Возможный дубликат [Добавить SUM значений двух LISTS в новый СПИСОК] (http://stackoverflow.com/questions/14050824/add-sum-of-values-of-two-lists-into-new-list) –

ответ

2

На самом деле, вы можете использовать zip:

>>> map(sum, map(lambda l: map(float, l), zip(*score))) 
[100.0, 19.5, 43.74, 26.68, 31.74, 100.0] 
1

Лучший способ сделать это с помощью zip встроенного класса или функцию и *-operator распаковывать «баллы» в переменные, используя операцию простого присваивания. Затем вы можете использовать встроенную функцию sum для вычисления суммы. Конечно, вам нужно будет конвертировать вам элемент плавать с помощью float и map

>>> score = [ 
... ['5.00', '4.30', '2.50', '3.60', '1.30', '5.00'], 
... ['80.00', '8.00', '32.00', '13.60', '20.00', '80.00'], 
... ['12.00', '6.00', '7.20', '8.40', '9.60', '12.00'], 
... ['3.00', '1.20', '2.04', '1.08', '0.84', '3.00'] 
... ] 
>>> a, b, c, d, e, f = [sum(map(float, i)) for i in zip(*score)] 
>>> a 
100.0 
>>> b 
19.5 
>>> c 
43.74 
>>> d 
26.68 
>>> e 
31.74 
>>> f 
100.0 

  1. Python 3.x
  2. Python 2.x
0

немного иначе:

score = [ 
    ['5.00', '4.30', '2.50', '3.60', '1.30', '5.00'], 
    ['80.00', '8.00', '32.00', '13.60', '20.00', '80.00'], 
    ['12.00', '6.00', '7.20', '8.40', '9.60', '12.00'], 
    ['3.00', '1.20', '2.04', '1.08', '0.84', '3.00'] 
] 

def sum_same_elements(l): 
    l_float = [map(float, lst) for lst in l] 
    to_sum = [] 
    for i in range(len(l[0])): 
     lst_at_index = [] 
     for lst in l_float: 
      lst_at_index.append(lst[i]) 
     to_sum.append(lst_at_index) 
    return map(sum, to_sum) 

print sum_same_elements(score)