我有一个列表列表,例如
T =[[0.10113], [0.56325], [0.02563], [0.09602], [0.06406], [0.04807]]
我想找到这些数字的总和。
我是 python 编程的新手,当我尝试一个简单的int(T[1])
转换时,我得到了错误
TypeError: int() argument must be a string or a number, not 'list'
我很感激任何意见。
我有一个列表列表,例如
T =[[0.10113], [0.56325], [0.02563], [0.09602], [0.06406], [0.04807]]
我想找到这些数字的总和。
我是 python 编程的新手,当我尝试一个简单的int(T[1])
转换时,我得到了错误
TypeError: int() argument must be a string or a number, not 'list'
我很感激任何意见。
简单的:
sum(x[0] for x in T)
你完成了 :)
当然,你可以使用
import itertools
sum(itertools.chain.from_iterable(T))
也。如果您的子列表每个都有超过 1 个元素,这将起作用。
您可以map
为此使用:
sum(map(sum, T))
>>> 总和(地图(总和,T)) 0.89816000000000007
从文档中map
:
映射(函数,可迭代,...)
将函数应用于可迭代的每个项目并返回结果列表。
因此,您正在使用map
总计内部列表,然后调用sum
总计这些值以获得最终答案。
如果您的内部列表包含多个项目,则此方法将起作用。
您可以使用 numpy sum 模块
import numpy as np
result = int(np.sum(T, axis=0))
或内置地图功能
result = int(sum(map(sum, T)))
In [31]: T =[[0.10113], [0.56325], [0.02563], [0.09602], [0.06406], [0.04807]]
In [32]: sum(t[0] for t in T)
Out[32]: 0.8981600000000001
>>> T =[[0.10113], [0.56325], [0.02563], [0.09602], [0.06406], [0.04807]]
>>> sum(x[0] for x in T)
0.8981600000000001