2011-01-24 38 views
0
[('1950', '6.5', '6.4', '6.3', '5.8', '5.5', '5.4', '5.0', '4.5', '4.4', '4.2', 
'4.2', '4.3', ' \n')] 

我该如何总结位置[1]到[12]的值?Python元组操作

+0

说明该解决方案提your_list [0]引用元组是列表的第一个元素(我不确定这是否是有意的) – 2011-01-25 00:59:21

回答

3

转换为浮动,使用列表理解和:

sum(float(x) for x in my_list[0][1:13]) 

编辑:eeks,范围是错误的。按照评论编辑。

+1

小心,这一个只能从位置1到11! – 2011-01-25 00:04:28

2
L=[('1950', '6.5', '6.4', '6.3', '5.8', '5.5', '5.4', '5.0', '4.5', '4.4', '4.2', '4.2', '4.3', ' \n')] 
sum(map(float,L[0][1:13])) 
0

可能使用lambda和reduce

lst = [('1950', '6.5', '6.4', '6.3', '5.8', '5.5', '5.4', '5.0', '4.5', '4.4', '4.2', '4.2', '4.3', ' \n')] 

lst_sum = reduce(lambda x, y : float(x) + float(y), lst[0][1:12]) 
+0

不会使用`sum`作为变量名称,因为它与内置函数`sum`冲突 - 巧合的是和reduce + lambda做同样的工作。我认为OP期望将这些项目作为花车添加,而不是作为字符串 – 2011-01-24 23:41:51

1

如果你想避免创建一个额外的临时列表,你可以使用islice

>>> from itertools import islice 
>>> L=[('1950', '6.5', '6.4', '6.3', '5.8', '5.5', '5.4', '5.0', '4.5', '4.4', '4.2', '4.2', '4.3', ' \n')] 
>>> sum(map(float,islice(L[0],1,13))) 
62.5