Python

Необходимо написать программу которая посчитает сумму всех элементов в матрице.

Как написать программу, которая посчитает сумму всех элементов в матрице?
*** Nik***
*** Nik***
244
Самый простой вариант:
 matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(sum(sum(matrix, [])))
Конструкция sum(matrix, []) превращает матрицу matrix в вектор.
А уже второй sum просто суммирует элементы этого вектора.
СН
Саня Не Важно
50 499
Лучший ответ
*** Nik*** А можете пожалуйста написать код, с функцией For? Мне кажется, что с функцией for будет попроще и понятней!
Никонов Роман Самый простой вариант:
 print(sum(map(sum, matrix))) 
И самый быстрый к тому же, т.к. не занимается конкатенацией списков.
1) У Вас матрица какая? Большая или маленькая? Целочисленная или может дроби содержать? Кто его знает - может быть она вообще у Вас комплекснозначная?
2) А откуда эта матрица берётся? Пусть её размер, скажем, 15×12: так что - 180 элементов откуда брать - сразу задавать при написании кода, что хлопотно, интерактивно с клавиатуры вводить, что тоже хлопотно, из файла считывать или же, например, её можно сформировать из рандомных элементов диапазона [a;b]?
3) Матрицу можно выдать на экран если она достаточно небольшая по размеру и числа не сверхгигантские. Это нужно вообще делать или нет? И вообще - понятно хоть почему я все эти вопросы задаю?
Вот пример с двумерным списком размера m×n случайных чисел из диапазона [a;b]:
 from random import randint 
a, b, m, n = map(int,input('a b m n: ').split())
N, M, s = range(n), range(m), 0
A = [[randint(a, b) for j in N] for i in M]
for i in M:
s += sum(A[i])
for j in N: print('%6d' % A[i][j], end = '')
print()
print('Сумма элементов матрицы', s)
input()

А когда надо и общую сумму подсчитывать, и ещё одновременно с этим элементы матрицы на экран выводить, то предыдущие варианты, естественно, просто совершенно неуместны. Да и матрица там слишком маленькая и формируется слишком просто чтобы сам код компактифицировать, а в вычислениях там ещё что-то оптимизировать, да ещё к тому же при помощи спецсредств. А Вам что нужно - никто ведь тут на самом деле этого не знает! Какую сумму подсчитывать? В какой матрице? Нормально по-человечески можете об этом написать?
Для написания программы на Python, которая будет считать сумму всех элементов в матрице, можно использовать следующий код:
 matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]  # пример матрицы 
sum = 0 # переменная для хранения суммы элементов

for row in matrix:
for elem in row:
sum += elem

print("Сумма элементов матрицы:", sum)
В этом примере мы создаем матрицу matrix и инициализируем переменную sum нулем. Затем мы используем два вложенных цикла for для прохода по каждому элементу матрицы и добавления его к переменной sum. Наконец, мы выводим результат суммирования на экран.
Важно отметить, что в этом примере мы использовали матрицу, заданную в виде списка списков. Если вы хотите создать матрицу с помощью библиотеки NumPy или другим способом, то код может отличаться. Также, если вы хотите вычислить сумму элементов только определенной строки или столбца матрицы, то вам нужно будет изменить логику циклов for.

и более компактный код
 from functools import reduce 

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] # пример матрицы

sum = reduce(lambda x, y: x + sum(y), matrix, 0)

print("Сумма элементов матрицы:", sum)
В этом примере мы импортируем функцию reduce из модуля functools. Затем мы создаем матрицу matrix и используем функцию reduce для вычисления суммы всех элементов в матрице. Функция reduce принимает три аргумента: лямбда-функцию, матрицу и начальное значение, которое равно 0. Лямбда-функция принимает два аргумента: x и y. Первый аргумент x - это накопленная сумма, а второй аргумент y - это текущий список элементов матрицы. Лямбда-функция возвращает сумму элементов списка y, которая затем добавляется к накопленной сумме x. В итоге, функция reduce возвращает сумму всех элементов в матрице.
Таким образом, мы можем использовать функциональное программирование и функцию reduce для написания короткого и быстродействующего кода для вычисления суммы всех элементов в матрице.
Vlad Joker
Vlad Joker
14 273
*** Nik*** Скажите пожалуйста, а можно как-нибудь по проще написать код? Потому что непонятно как-то!
*** Nik*** Я просто начинающий программист, и к тому же я ещё таких сложных кодов не решал!
Vlad Joker 1 код для начинающих