我有这个清单
mylist = [[1.0, 10.0],
[20.0, 1135.0],
[3.0, 5.0]]
我希望按照24.0,1150.0
这样的列获得总数任何人都可以帮助我吗?
答案 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编码的,数组的条目需要具有相同的类型,并且数组的内容存储在连续的内存中。