Проблема с матрицей Python

#python #sum

#python #сумма

Вопрос:

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

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

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


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

Спасибо



ПРАВКА2:


Я пытаюсь:

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

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

Обратная трассировка (последний последний вызов):
Файл «xxx.py «, строка 3, в файле sum(sum(el[: -1]) для el в x) «xxx.py «, строка 3, в sum(sum(el[: -1]) для el в x) Ошибка типа: неподдерживаемые типы операндов для : ‘int’ и ‘str’

Ответ №1:

Вы можете разобрать все элементы, кроме последнего, индексируемого с помощью [:-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) 
  

Комментарии:

1. Хм, я получил ошибку, пожалуйста, посмотрите на РЕДАКТИРОВАНИЕ 2; Не всегда есть 3 элемента, это случайные данные, поэтому случайные «входные данные»…

2. В первом примере не использовалось приведение. Я обновил его, чтобы преобразовать значения в значения с плавающей точкой.

3. Может быть, вы знаете, как я могу получить длину этого массива. Я знаю, что это что-то в этом роде len(x); но это для массива. Он должен подсчитывать все элементы, кроме последнего из x «матрицы». Так что в моем случае результат должен быть 6. спасибо