【问题标题】:Sum all elements having the same index in different lists对不同列表中具有相同索引的所有元素求和
【发布时间】:2015-12-04 03:29:38
【问题描述】:
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的不同列表中对具有相同索引的所有元素求和?

【问题讨论】:

标签: python list


【解决方案1】:

其实你可以用zip:

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

【讨论】:

    【解决方案2】:

    最好的方法是使用zip 内置类1 或函数2*-operator 将“分数”解压缩到变量中使用简单的赋值操作。然后使用sum 内置函数计算总和。当然,您需要使用 floatmap 将元素转换为浮点数

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

    【讨论】:

      【解决方案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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-21
        • 2013-08-18
        • 1970-01-01
        • 1970-01-01
        • 2018-09-17
        • 2020-06-25
        • 2018-06-15
        相关资源
        最近更新 更多