如何总结价值?

时间:2014-07-26 11:09:30

标签: python python-2.7

我有这个清单

mylist = [[1.0, 10.0], 
          [20.0, 1135.0], 
          [3.0, 5.0]]

我希望按照24.0,1150.0

这样的列获得总数

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:5)

>>> list(map(sum, zip(*mylist)))
[24.0, 1150.0]

list仅在python 3中需要,在python 2中你可以这样做:map(sum, zip(*mylist))

说明:

*mylist 将列表扩展为其元素,因此zip(*mylist)相当于:

zip(mylist[0], mylist[1], mylist[2])

zip,基本上 zips 它的参数在一起,也就是它从每个参数中取一个元素并从中生成一个元组,并对每个参数的下一个元素执行相同的操作, 等等。这样:

>>> zip(*mylist)
[(1.0, 20.0, 3.0), (10.0, 1135.0, 5.0)]

map接受一个函数和一些 iterables 并将函数迭代地应用于那些迭代,因此例如map(f, xs)等同于:[f(x) for x in xs]

在python 3中,zip返回一个可迭代的zip对象,map返回一个可迭代的map对象,因此你必须显式调用list迭代对象并返回一个列表。

答案 1 :(得分:1)

另一种可能性(特别是如果你经常需要处理计算)将使用NumPy

import numpy as np
myarray=np.array(mylist)       # convert your list into an array type of numpy
myarray_sum=np.sum(arr,axis=0) # sum every column (axis=0) or every row (axis=1)

特别是对于大型数组,这种方法的优点是速度,因为NumPys操作是用C编码的,数组的条目需要具有相同的类型,并且数组的内容存储在连续的内存中。