Проблема с суммой Python

#python #matrix

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

В этом коде sum суммируйте все числа, но я хочу сначала суммировать [‘1’, ‘7’, ‘ U1’], первое число, а из второго [‘1.5’, ‘8’, ‘ U1’] первое число, и то же самое для второго…

таким образом, конечный результат заполнения выглядит как «матрица» :

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

Ответ №1:

 >>> 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) это простой способ транспонировать матрицу (переключать строки <—> столбцы), и это позволяет вам легко суммировать каждую строку.