只加总元组列表中的第二个元素

问题描述:

假设我有这个元组列表:[('3', '20'), ('1', '50'), ('2', '50')],我将如何去总结每个元组中的第二个元素?因此在这个例子中,总和将是120.另外,我需要事先将sum()函数的数字转换为整数吗?只加总元组列表中的第二个元素

你可以尝试像,

tup = [('3', '20'), ('1', '50'), ('2', '50')] 
s= 0 
for i in tup: 
    s+= int(i[-1]) 
+0

这工作就像一个魅力,谢谢。对不起打扰以下问题,但你能澄清[-1]做什么?非常感谢。 – kraderic

+0

@kraderic当您在列表中使用否定索引时,它从结尾而不是开始计数。所以'我[-1]'是列表的最后一个元素。 – Barmar

+0

@ kraderic [-1]指的是最后一个。在这种情况下,它与[1]相同。请查看http://*.com/questions/509211/explain-pythons-slice-notation以获得解释。 –

如果l是你然后列出:

sum(int(x[1]) for x in l) 

相反的sum(...)你也可以使用sum((...))sum([...])。前者使用生成器表达式,后者创建一个临时列表(列表理解)。

+0

您不必将您的生成器表达式括在括号中即可。 'sum(int(x [1])for x in l)'工作得很好。 – Delgan

+0

@Delgan在您发表评论时已经修改。 :-) – Markus