Python и двумерные списки

Эффективные алгоритмы для работы с двумерными списками в Python

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

Создание двумерных списков

Простой способ создать двумерный список — это объявить его напрямую:

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(matrix)

Здесь matrix — это двумерный список, состоящий из трех списков, каждый из которых содержит три элемента.

Доступ к элементам двумерного списка

Как и в случае одномерных списков, вы можете получить доступ к элементам двумерного списка по их индексу:

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(matrix[0])  # Вывод: [1, 2, 3]
print(matrix[0][1])  # Вывод: 2

Здесь matrix[0] возвращает первый подсписок, а matrix[0][1] возвращает второй элемент первого подсписка.

Изменение элементов двумерного списка

Вы также можете изменить элементы двумерного списка, обратившись к ним по индексу:

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
matrix[0][1] = 20
print(matrix)  

#[[1, 20, 3], [4, 5, 6], [7, 8, 9]]

Обход двумерного списка

Часто вам может потребоваться обойти все элементы двумерного списка. Самый простой способ это сделать — использовать вложенные циклы:

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for row in matrix:
    for element in row:
        print(element, end=' ')
    print()

#1 2 3 
#4 5 6 
#7 8 9

В этом коде внешний цикл проходит по каждому подсписку matrix, а внутренний цикл проходит по каждому элементу в текущем подсписке.

Генерация двумерных списков

Вы можете создать двумерные списки динамически, используя вложенные генераторы списков:

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]]

Здесь внутренний генератор создает подсписок, заполненный нулями, а внешний генератор создает список таких подсписков.

Вложенная индексация и срезы в двумерных списках

Как и с одномерными списками, вы можете использовать индексацию и срезы для доступа к подмножествам двумерного списка:

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(matrix[1][1:])  

#[5, 6]

Здесь matrix[1][1:] возвращает срез второго подсписка, начиная с второго элемента.

Заключение

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

Содержание: