对不同列表中具有相同索引的所有元素求和

2024-05-18 23:27:59 发布

您现在位置:Python中文网/ 问答频道 /正文

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']
]

我想要

^{pr2}$

但是我不知道score中有多少个列表,所以我不能使用zip()。在python中,如何对不同列表中具有相同索引的所有元素求和?在


Tags: 元素列表zipscorepr2
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']
]

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)

实际上,您可以使用^{}

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

最好的方法是使用^{}内置类1或函数2^{}使用简单的赋值操作将“分数”解压到变量中。然后使用^{}内置函数计算和。当然,您需要使用^{}^{}将元素转换为float

>>> 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版

相关问题 更多 >

    热门问题