2011-04-28 91 views
2

我有一個問題:的Python和麻煩

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」],第一個數字總結和從第二[ '1.5', '8', '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]] 

zip(*x)是轉置矩陣的簡單方法(切換行< - >列),這可以讓您輕鬆地對每一行進行求和。