一个列表中的两个总和

Kev*_*don 3 python list

我想在列表中得到两个不同值的总和.例如:

sample = [(1,3), (4,5), (8,2)]
Run Code Online (Sandbox Code Playgroud)

我想要输出

13, 10
Run Code Online (Sandbox Code Playgroud)

我可以用几种不同的方式做到这一点.这是我目前的方式:

t1 = 0
t2 = 0
for item1, item2 in sample:
    t1 += item1
    t2 += item2
Run Code Online (Sandbox Code Playgroud)

什么是更Pythonic解决这个问题的方法?

Fas*_*tle 7

你可以试试这个:

from itertools import izip
sample = [(1,3), (4,5), (8,2)]
t1, t2 = map(sum, izip(*sample))
Run Code Online (Sandbox Code Playgroud)

您也可以使用列表推导而不是map.

from itertools import izip
sample = [(1,3), (4,5), (8,2)]
t1, t2 = [sum(t) for t in izip(*sample)]
Run Code Online (Sandbox Code Playgroud)

而你可以处理两个以上的总和:

from itertools import izip
sample = [(1, 3, 1), (4, 5, 1), (8, 2, 1)]
sums = [sum(t) for t in izip(*sample)]
# sums == [13, 10, 3]
Run Code Online (Sandbox Code Playgroud)