的Python和麻烦

问题描述:

我有一个问题:的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 

>>> 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)是转置矩阵的简单方法(切换行< - >列),这可以让您轻松地对每一行进行求和。