Создание двумерных массивов в Python
Двумерные массивы в Python представляют собой списки списков, где каждый вложенный список является строкой матрицы. Такая структура данных широко применяется для работы с матрицами, таблицами и двумерными координатными системами.
Статическое создание двумерного массива
Самый простой способ создать двумерный массив — объявить его явно:
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
Создание пустого двумерного массива
Для создания пустого двумерного массива фиксированного размера используется генератор списков:
rows, cols = 3, 3
matrix = [[0 for _ in range(cols)] for _ in range(rows)]
print(matrix) # [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
Важно: Избегайте создания массива через [[0] * cols] * rows, так как это создаст ссылки на один и тот же объект.
Инициализация с заданным значением
rows, cols = 3, 3
initial_value = 1
matrix = [[initial_value for _ in range(cols)] for _ in range(rows)]
print(matrix) # [[1, 1, 1], [1, 1, 1], [1, 1, 1]]
Создание из строки
Полезный способ создания двумерного массива из форматированной строки:
input_string = "1,2,3 4,5,6 7,8,9"
rows = input_string.split(' ')
two_dimensional_array = [list(map(int, row.split(','))) for row in rows]
print(two_dimensional_array) # [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Создание с помощью NumPy
Для более сложных операций рекомендуется использовать библиотеку NumPy:
import numpy as np
# Создание нулевого массива
matrix = np.zeros((3, 3))
# Создание единичной матрицы
identity = np.eye(3)
# Создание из обычного списка
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
Доступ к элементам двумерного массива
Чтение элемента
Для доступа к элементу используется двойная индексация:
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
print(matrix[1][2]) # 6 (вторая строка, третий элемент)
Изменение элемента
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
matrix[1][2] = 10
print(matrix) # [[1, 2, 3], [4, 5, 10], [7, 8, 9]]
Получение строки или столбца
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
# Получение строки
row = matrix[1] # [4, 5, 6]
# Получение столбца
column = [row[1] for row in matrix] # [2, 5, 8]
Итерация по двумерному массиву
Итерация по строкам
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
for row in matrix:
print(row)
Итерация по элементам с индексами
two_dimensional_array = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
for i in range(len(two_dimensional_array)):
for j in range(len(two_dimensional_array[i])):
print(f"Элемент в позиции ({i}, {j}) равен {two_dimensional_array[i][j]}")
Итерация с enumerate
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
for i, row in enumerate(matrix):
for j, element in enumerate(row):
print(f"matrix[{i}][{j}] = {element}")
Основные операции с двумерными массивами
Транспонирование матрицы
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
transposed = [[matrix[j][i] for j in range(len(matrix))] for i in range(len(matrix[0]))]
print(transposed) # [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
# Альтернативный способ с zip
transposed = list(map(list, zip(*matrix)))
Поиск максимального и минимального элемента
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
max_value = max(max(row) for row in matrix)
min_value = min(min(row) for row in matrix)
print(f"Максимальный элемент: {max_value}") # 9
print(f"Минимальный элемент: {min_value}") # 1
Сумма всех элементов
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
total_sum = sum(sum(row) for row in matrix)
print(f"Сумма всех элементов: {total_sum}") # 45
Сумма по строкам и столбцам
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
# Сумма по строкам
row_sums = [sum(row) for row in matrix]
print(f"Сумма по строкам: {row_sums}") # [6, 15, 24]
# Сумма по столбцам
col_sums = [sum(matrix[i][j] for i in range(len(matrix))) for j in range(len(matrix[0]))]
print(f"Сумма по столбцам: {col_sums}") # [12, 15, 18]
Генераторы двумерных массивов
Генерация матрицы произведений
rows, cols = 3, 3
matrix = [[i * j for j in range(cols)] for i in range(rows)]
print(matrix) # [[0, 0, 0], [0, 1, 2], [0, 2, 4]]
Генерация шахматной доски
rows, cols = 3, 3
matrix = [[(i + j) % 2 for j in range(cols)] for i in range(rows)]
print(matrix) # [[0, 1, 0], [1, 0, 1], [0, 1, 0]]
Генерация единичной матрицы
size = 3
identity = [[1 if i == j else 0 for j in range(size)] for i in range(size)]
print(identity) # [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
Полезные функции для работы с двумерными массивами
Проверка квадратной матрицы
def is_square(matrix):
return len(matrix) == len(matrix[0]) if matrix else False
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(is_square(matrix)) # True
Поворот матрицы на 90 градусов
def rotate_90(matrix):
return [[matrix[j][i] for j in range(len(matrix)-1, -1, -1)] for i in range(len(matrix[0]))]
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
rotated = rotate_90(matrix)
print(rotated) # [[7, 4, 1], [8, 5, 2], [9, 6, 3]]
Сглаживание двумерного массива
def flatten(matrix):
return [element for row in matrix for element in row]
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flat = flatten(matrix)
print(flat) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
Двумерные массивы в Python предоставляют гибкий инструмент для работы с табличными данными и матрицами. Для более сложных математических операций рекомендуется использовать специализированные библиотеки, такие как NumPy или Pandas.