Двумерные массивы (матрицы)
Основы работы с матрицами
Двумерный массив (матрица) — это структура данных, содержащая элементы, организованные в строки и столбцы. В 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) | Необходимо обойти все строки и поменять элементы |
Заключение
Работа с двумерными массивами (матрицами) — важная тема в программировании и в ЕГЭ по информатике. Понимание основных алгоритмов обработки матриц, включая заполнение, поиск элементов, вычисление характеристик и перестановку строк и столбцов, необходимо для успешного решения задач.
При решении задач важно учитывать временную сложность алгоритмов и выбирать наиболее эффективные методы в зависимости от конкретной ситуации.