Добавление значений в кортеж, который находится в списке в Python - PullRequest
3 голосов
/ 07 февраля 2010

Я получаю некоторые данные из базы данных, которая возвращает их в списке значений кортежей, таких как: [(1,), (1,), (1,), (1,), (1,), ( 1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), ( 1,), (1,), (1,)]

Есть ли функция, которая может суммировать значения в списке кортежей? Например, приведенный выше образец должен вернуть 18.

Ответы [ 3 ]

7 голосов
/ 07 февраля 2010
>>>> 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 голосов
/ 07 февраля 2010
>>> 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
0 голосов
/ 07 февраля 2010

Просто повеселиться с itertools, не очень читабельным. Работает, только если вы рассматриваете 1-й элемент в кортеже.

>>> 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
...