在Python中添加列表中元组的值

3

我从数据库中检索到一些数据,它以元组值的列表形式返回,例如:[(1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,)]

是否有一个函数可以对元组列表中的值进行求和?例如,上面的示例应该返回18。


7
如果支持的话,您可以直接在数据库查询中使用SUM函数。 - AndiDog
2
它们总是(1,)吗?你可以直接使用len :) - John La Rooy
谢谢你提供的信息,AndiDog。我忘记了那个函数。 - Dan
3个回答

7
>>>> l=[(1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,)]

>>> sum(map(sum,l))
18

>>> l[0]=(1,2,3,)
>>> l
[(1, 2, 3), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,)]
>>> sum(map(sum,l))
23

4
>>> l = [(1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,)]
>>> s = sum(i[0] for i in l)
>>> print s
18

如果元组中的数字超过1位,会有什么影响吗?不会有影响吧? - Dan
1
如果一个数字有多个数字位,那么程序可以正常工作。但如果有多个数字,则请参考S.Mark的答案。 - Max Shawabkeh

0

使用itertools玩个乐呵,不太易读。仅在考虑元组中的第一个元素时有效。

>>> import itertools
>>> l = [(1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,)]
>>> sum(*itertools.izip(*l))
18

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接