Двумерные массивы (матрицы) в Python: создание и обработка
Вложенные списки, индексы строки и столбца [i][j], табличный ввод и вывод матрицы, сумма элементов, главная и побочная диагонали.
Двумерный массив (матрица / таблица) — это упорядоченный набор однотипных данных, элементы которого определяются двумя индексами: номером строки и номером столбца.
В реальной жизни с матрицами мы сталкиваемся постоянно: шахматная доска (8 × 8), расписание уроков (дни недели × уроки), пиксели экрана монитора или таблица в Excel.
В языке Python нет специального отдельного типа «матрица»: двумерный массив реализуется как список, элементами которого являются другие списки (список списков / вложенный список):
[1, 2, 3], # Строка 0
[4, 5, 6], # Строка 1
[7, 8, 9] # Строка 2
]
Чтобы обратиться к конкретному элементу матрицы, используют двойную индексацию matrix[i][j], где:
• i — номер строки (от 0 до n-1);
• j — номер столбца (от 0 до m-1).
Например, matrix[1][2] — элемент на пересечении строки 1 и столбца 2 (число 6).
Матрица (n × m)
matrix[i][j]
Для ввода матрицы с клавиатуры (когда заданы размеры n строк и m столбцов) используют списочные включения (list comprehension) и вложенные циклы:
n, m = map(int, input().split()) # Размерность матрицы
for i in range(n):
matrix.append(row)
Табличный вывод на экран (построчно с пробелами):
for row in matrix:
for elem in row:
print(f"{elem:4d}", end=" ") # 4 знакоместа на число
print() # Переход на новую строку
Вложенный цикл
Квадратная матрица — матрица, у которой количество строк равно количеству столбцов ().
Диагонали квадратной матрицы n × n:
1. Главная диагональ — идет из левого верхнего угла (0, 0) в правый нижний угол (n-1, n-1). Условие принадлежности элемента главной диагонали: индекс строки равен индексу столбца:
(элементы matrix[0][0], matrix[1][1], matrix[2][2]);
2. Побочная диагональ — идет из правого верхнего угла (0, n-1) в левый нижний угол (n-1, 0). Условие принадлежности элемента побочной диагонали:
(элементы matrix[0][2], matrix[1][1], matrix[2][0] для n = 3).
Главная диагональ (i == j)
Побочная диагональ (i + j == n - 1)
Основные задачи на матрицы:
1. Нахождение суммы всех элементов: total = sum(sum(row) for row in matrix);
2. Поиск максимума: maximum = max(max(row) for row in matrix);
3. Сумма элементов главной диагонали (след матрицы / Trace):
4. Транспонирование матрицы — замена строк столбцами: trans = [[matrix[j][i] for j in range(n)] for i in range(m)].
