Проблема с питоном - PullRequest
       5

Проблема с питоном

2 голосов
/ 29 апреля 2011

У меня следующая проблема:

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

1 Ответ

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...