2011-01-24 5 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]까지 값을 어떻게 요약 할 수 있습니까?파이썬 튜플 연산

+0

참고 islice 사용할 수 있습니다 이게 의도되었는지 아닌지 잘 모르겠습니다.) –

답변

3

변환이 뜨고 합 지능형리스트를 사용합니다 :

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

편집 : 주 주당 수업 시간을 범위가 잘못되었습니다. 댓글 당 수정 됨.

+1

주의 사항,이 위치는 1에서 11까지만 합산됩니다! –

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

은 람다 및 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가 아이템이 스트링이 아닌 수레로 추가 될 것으로 생각한다. –

+0

@gnibbler : 편집 중에 나를 잡았다. :) – James

1

, 당신은 솔루션 your_list [0] (목록의 첫 번째 요소 인 튜플을 참조하는 언급

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