如何在Python中对从数据库获取的列表求和。错误:TypeError: 不支持的操作数类型:'int'和'tuple

1 投票
3 回答
812 浏览
提问于 2025-04-17 16:07

我想在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])时,我得到了正确的答案。

3 个回答

0

你可以先把列表中的列表或元组“压平”,然后再对里面的元素进行求和:

mylist =  [(52642,), (57127,), (9000,), (29000,), (350000,), (21000,)...]
sum(sum(mylist,()))
1

你有一个包含元组的列表,所以你可以这样做:

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

这种方法需要创建一个新的列表,但这也是你可以考虑的另一种选择。

编辑:

正如其他人已经提到的,mylist里的元素是元组。因为mylist中的每个元素的第一个位置都有一个数字(整数),所以你可以把列表中每个元素(元组)第0个位置的值加起来。

撰写回答