#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. спасибо