我想在列表中得到两个不同值的总和.例如:
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解决这个问题的方法?
你可以试试这个:
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)