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 = 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 :(得分: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 :(得分:1)
执行此操作的最佳方法是使用zip
内置类 1 或函数 2 和*-operator
来解压缩& #34;得分"使用简单的赋值操作转换为变量。然后使用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
答案 2 :(得分: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)