1

如何对我从 python 中的数据库获得的列表中的元素求和。每次我尝试时都会收到错误 TypeError: unsupported operand type(s) for +: 'int' and 'tuple'

def sum_num(mylist):
     return sum(mylist)

当我打印我的列表时,我得到这个 [(52642,), (57127,), (9000,), (29000,), (350000,), (21000,), (41400,), (21600,)] 是我表中的数据

mylist 是从我的数据库中的数据填充的列表。谁能告诉我哪里有错误?如果还有其他方法可以做到这一点?

当我在做 print sum(mylist[1]+ mylist[2]) 我得到了正确的答案

4

3 回答 3

3
lst = [ i[0] for i in mylist]
sum(lst)

这种方式需要创建另一个列表,但您也可以考虑使用它。

编辑:

像已经提到的其他人一样, 的元素mylist是元组。由于 in 中的每个元素在mylist其第一个位置都有一个数值 (int),因此您将位于0列表内每个元素(元组)位置的值相加。

于 2013-02-16T23:02:27.320 回答
1

你有一个元组列表,所以你应该这样做:

sum( sum(tuple) for tuple in mylist )
于 2013-02-16T22:42:20.673 回答
0

您可以先展平列表或元组列表,然后再对组件求和:

mylist =  [(52642,), (57127,), (9000,), (29000,), (350000,), (21000,)...]
sum(sum(mylist,()))
于 2013-02-16T22:48:16.983 回答