Матричная задача Python - PullRequest
       4

Матричная задача Python

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

Например, если у меня есть матрица:

x=[['1', '7', 'U1'], ['1.5', '8', 'U1'], ['2', '5.5', 'U2']]

Как я могу взять все данные из x, кроме последнего. Тогда мне нужно сложить эти элементы.


Это то, что мне нужно: sum=1+7+1.5+8+2+5.5= ??

Спасибо



EDIT2:


Я пытаюсь:

> x=[['1', '7', 'U1'], ['1.5', '8',
> 'U1'], ['2', '5.5', 'U2']]
> 
> sum(sum(el[:-1]) for el in x)

Но получена ошибка:

Traceback (последний последний вызов):
Файл "xxx.py", строка 3, в сумма (сумма (el [: - 1]) для el в x) Файл "xxx.py", строка 3, в sum (sum (el [: - 1]) для el в x) TypeError: неподдерживаемые типы операндов для +: 'int' и 'str'

1 Ответ

9 голосов
/ 25 апреля 2011

Вы можете взять все элементы, кроме последнего индексации, с помощью [:-1].

Чтобы взять эту сумму, попробуйте sum(sum(float(el) for el in els[:-1]) for els in x).

Если у вас на самом деле есть строки в списке, вам может понадобиться привести элементы. Кроме того, если всегда есть 3 элемента, это может быть немного быстрее:

sum(float(a) + float(b) for a,b,_ in x) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...