0

我有一个列表列表,例如

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'

我很感激任何意见。

4

5 回答 5

2

简单的:

sum(x[0] for x in T)

你完成了 :)


当然,你可以使用

import itertools
sum(itertools.chain.from_iterable(T))

也。如果您的子列表每个都有超过 1 个元素,这将起作用。

于 2012-11-29T15:51:18.643 回答
2

您可以map为此使用:

sum(map(sum, T))
>>> 总和(地图(总和,T))
0.89816000000000007

从文档中map

映射(函数,可迭代,...)

将函数应用于可迭代的每个项目并返回结果列表。

因此,您正在使用map总计内部列表,然后调用sum总计这些值以获得最终答案。

如果您的内部列表包含多个项目,则此方法将起作用。

于 2012-11-29T15:51:34.850 回答
1

您可以使用 numpy sum 模块

 import numpy as np
 result = int(np.sum(T, axis=0))

或内置地图功能

 result = int(sum(map(sum, T)))
于 2012-11-29T15:53:41.270 回答
1
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
于 2012-11-29T15:51:40.183 回答
1
>>> T =[[0.10113], [0.56325], [0.02563], [0.09602], [0.06406], [0.04807]]
>>> sum(x[0] for x in T)
0.8981600000000001
于 2012-11-29T15:51:51.677 回答