Работа с двумерными массивами в Python: создание, доступ к элементам и манипуляции с матрицами и таблицами данных.

онлайн тренажер по питону
Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Самоучитель Python 3, собранный из материалов данного сайта.Предназначен в основном для тех, кто хочет изучить язык программирования Python с нуля.

Создание двумерных массивов в 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.

категории

  • Введение в Python
  • Основы программирования на Python
  • Управляющие конструкции
  • Структуры данных
  • Функции и модули
  • Обработка исключений
  • Работа с файлами и потоками
  • файловая система
  • Объектно-ориентированное программирование (ООП)
  • Регулярные выражения
  • Дополнительные темы
  • Общая база питона