2011-04-28 3 views
2

내가 다음 문제가이 코드의 합계에서파이썬 합 문제

x=[['1', '7', 'U1'], ['1.5', '8', 'U1']] 
y=sum(sum(float(el) for el in els[:-1]) for els in x) 

print(x) 
print(y) 

, 합계 모든 숫자를하지만, 내가 먼저 [ '1', '7', 'U1', 첫 번째 숫자에서 합계를

y= 
[ [2.5],        #1+1.5=2.5 
    [15]]         #7+8=15 

답변

8
>>> x=[['1', '7', 'U1'], ['1.5', '8', 'U1']] 
>>> zip(*x) 
[('1', '1.5'), ('7', '8'), ('U1', 'U1')] 
>>> [[sum(float(n) for n in nums)] for nums in zip(*x)[:-1]] 
[[2.5], [15.0]] 
: 및

때문에 최종 결과가 "매트릭스"로 모양을 채우기 ... 제 [ '150', '8', 'U1'] 제 번호 및 초 동일한 행

zip(*x)은 매트릭스를 바꾸는 간단한 방법입니다 (스위치 행 < -> columns). 그러면 각 행을 쉽게 합칠 수 있습니다.