如何在Python中对从数据库获取的列表求和。错误:TypeError: 不支持的操作数类型:'int'和'tuple
我想在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
个位置的值加起来。