P
pro·school.ru
Каталог школ

Двумерные массивы и матрицы

💻 Информатика · 10 класс

Двумерный массив

Двумерный массив (матрица, таблица) — это структура, элементы которой расположены в виде прямоугольной таблицы из строк и столбцов. Каждый элемент задаётся двумя индексами: номером строки и номером столбца. Запись a[i][j] означает элемент, стоящий в строке i и столбце j.

Двумерные массивы применяют для хранения таблиц: матриц чисел, изображений (пиксели), игровых полей, расписаний. По сути это «массив массивов»: каждая строка сама является одномерным массивом.

Объявление и обход

Размер матрицы задают двумя числами: n строк и m столбцов. Для обхода всех элементов используют вложенные циклы: внешний — по строкам, внутренний — по столбцам.

for i in range(n):
for j in range(m):
обработать a[i][j]

Особые элементы матрицы

ЭлементыУсловие на индексы
Главная диагональi == j
Побочная диагональi + j == n - 1
Выше главной диагоналиi < j
Ниже главной диагоналиi > j

Разбор примера

Вычислим сумму элементов главной диагонали квадратной матрицы размера n на n:

s = 0
for i in range(n):
s = s + a[i][i]

Поскольку у элементов диагонали номер строки совпадает с номером столбца, достаточно одного цикла и обращения a[i][i]. Для побочной диагонали обращались бы к a[i][n-1-i].

Где применяется

Матрицы встречаются в обработке изображений: чёрно-белая картинка — это таблица яркостей пикселей. Игровое поле в крестики-нолики или шахматах удобно хранить как двумерный массив. Транспортные и логические задачи часто сводятся к матрице связей между объектами.

Заполнение и ввод

Чтобы создать матрицу из нулей, в Python пишут вложенное выражение, а ввод выполняют двумя циклами:

a = [[0]*m for i in range(n)]
for i in range(n):
for j in range(m):
a[i][j] = int(input())

Важно создавать строки матрицы независимо: ошибочная запись [[0]*m]*n создаёт n ссылок на одну и ту же строку, и изменение одной ячейки меняет весь столбец.

Типичные задачи

На двумерных массивах решают: подсчёт суммы или максимума по каждой строке и каждому столбцу, поиск седловой точки, транспонирование (обмен строк и столбцов местами), подсчёт элементов с заданным свойством. Например, сумму элементов k-й строки находят так:

s = 0
for j in range(m):
s = s + a[k][j]

А чтобы найти сумму по каждому столбцу, внешний цикл идёт по столбцам, внутренний — по строкам. Понимание, какой индекс «бежит» первым, — ключ к правильному решению таких задач.

Частые ошибки. Путаница порядка индексов: первый — строка, второй — столбец. Обход прямоугольной матрицы как квадратной приводит к выходу за границу. Создание матрицы через [[0]*m]*n вместо списочного выражения. Помните: число столбцов m может не равняться числу строк n.

Кратко о главном

  • Двумерный массив хранит данные в виде таблицы строк и столбцов.
  • Элемент задаётся двумя индексами: a[i][j].
  • Полный обход — вложенными циклами.
  • Главная диагональ: i == j, побочная: i + j == n - 1.