Пн. Июн 1st, 2026

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

Основы работы с матрицами

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

1 2 3
4 5 6
7 8 9

Пример матрицы 3×3

Заполнение матриц по заданным правилам

Заполнение последовательными числами

def create_sequential_matrix(rows, cols):
    matrix = []
    counter = 1
    for i in range(rows):
        row = []
        for j in range(cols):
            row.append(counter)
            counter += 1
        matrix.append(row)
    return matrix

# Пример использования
matrix = create_sequential_matrix(3, 3)
for row in matrix:
    print(row)
# Вывод:
# [1, 2, 3]
# [4, 5, 6]
# [7, 8, 9]

Заполнение по индексам

def create_index_based_matrix(rows, cols):
    matrix = []
    for i in range(rows):
        row = []
        for j in range(cols):
            # Пример: значение равно (i+1) * 10 + (j+1)
            value = (i + 1) * 10 + (j + 1)
            row.append(value)
        matrix.append(row)
    return matrix

# Пример использования
matrix = create_index_based_matrix(3, 3)
for row in matrix:
    print(row)
# Вывод:
# [11, 12, 13]
# [21, 22, 23]
# [31, 32, 33]

Поиск элемента в матрице

Поиск элемента в матрице осуществляется путем перебора всех элементов:

def find_element(matrix, target):
    for i in range(len(matrix)):
        for j in range(len(matrix[0])):
            if matrix[i][j] == target:
                return (i, j)  # возвращаем координаты элемента
    return (-1, -1)  # элемент не найден

# Пример использования
matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

target = 5
row, col = find_element(matrix, target)
if row != -1:
    print(f"Элемент {target} найден в позиции ({row}, {col})")
else:
    print(f"Элемент {target} не найден в матрице")
1 2 3
4 5 6
7 8 9

Поиск элемента 5 в матрице

Вычисление характеристик матрицы

Сумма элементов

def matrix_sum(matrix):
    total = 0
    for row in matrix:
        for element in row:
            total += element
    return total

# Пример использования
matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

print("Сумма всех элементов:", matrix_sum(matrix))  # 45

Максимум и минимум

def matrix_max(matrix):
    max_val = matrix[0][0]
    for row in matrix:
        for element in row:
            if element > max_val:
                max_val = element
    return max_val

def matrix_min(matrix):
    min_val = matrix[0][0]
    for row in matrix:
        for element in row:
            if element < min_val:
                min_val = element
    return min_val

# Пример использования
matrix = [
    [5, 12, 3],
    [9, 1, 8],
    [4, 7, 6]
]

print("Максимальный элемент:", matrix_max(matrix))  # 12
print("Минимальный элемент:", matrix_min(matrix))   # 1

Перестановка строк и столбцов

Перестановка строк

def swap_rows(matrix, row1, row2):
    matrix[row1], matrix[row2] = matrix[row2], matrix[row1]
    return matrix

# Пример использования
matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

print("Исходная матрица:")
for row in matrix:
    print(row)

swap_rows(matrix, 0, 2)

print("\nПосле перестановки строк 0 и 2:")
for row in matrix:
    print(row)
# Вывод:
# [7, 8, 9]
# [4, 5, 6]
# [1, 2, 3]

До:

1 2 3
4 5 6
7 8 9

После:

7 8 9
4 5 6
1 2 3

Перестановка первой и последней строк

Перестановка столбцов

def swap_columns(matrix, col1, col2):
    for row in matrix:
        row[col1], row[col2] = row[col2], row[col1]
    return matrix

# Пример использования
matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

print("Исходная матрица:")
for row in matrix:
    print(row)

swap_columns(matrix, 0, 2)

print("\nПосле перестановки столбцов 0 и 2:")
for row in matrix:
    print(row)
# Вывод:
# [3, 2, 1]
# [6, 5, 4]
# [9, 8, 7]

До:

1 2 3
4 5 6
7 8 9

После:

3 2 1
6 5 4
9 8 7

Перестановка первого и последнего столбцов

Важные моменты для запоминания

Операция Сложность Примечания
Заполнение матрицы O(n×m) n - количество строк, m - количество столбцов
Поиск элемента O(n×m) В худшем случае просматриваем все элементы
Вычисление суммы O(n×m) Необходимо пройти по всем элементам
Поиск максимума/минимума O(n×m) Требуется полный проход по матрице
Перестановка строк O(m) Замена ссылок на строки
Перестановка столбцов O(n×m) Необходимо обойти все строки и поменять элементы

Заключение

Работа с двумерными массивами (матрицами) — важная тема в программировании и в ЕГЭ по информатике. Понимание основных алгоритмов обработки матриц, включая заполнение, поиск элементов, вычисление характеристик и перестановку строк и столбцов, необходимо для успешного решения задач.

При решении задач важно учитывать временную сложность алгоритмов и выбирать наиболее эффективные методы в зависимости от конкретной ситуации.