Доброго времени суток, читатели, зрители моего канала programmer's notes.
Данная статья это приложение к уроку 15.
Python. Двумерные списки
Двумерные списки состоят из элементов, представляющие из себя простые списки одинаковой длины. Двумерные списки, это в сущности, с математической точки зрения двумерные матрицы. Обращение к простым элементам списка (двумерной матрицы) можно получить с помощью двух индексов, первый обозначает строку, второй столбец, на пересечении которых расположен элемент: ls[1][2], ls[0][1].
Ниже в программе показано, как можно выводить элементы двумерного списка. Первый способ это непосредственно обращение к простому элементу. Второй - получение вложенных списков и затем вывод его элементов. Суть, при этом, одна и та же, но программно это выглядит по разному.
Часто в конкретных задачах требуется сгенерировать двумерный список. Конечно его можно просто записать, как это сделано в предыдущем примере. Но, в задачах может требовать динамическая генерация, т.е. когда задается количество строки и столбцов на входе программы. Вот тогда пригодится способ, показанный ниже.
Еще один способ генерации, когда элементы задаются с клавиатуры представлен в следующей программе. Заметим, что в предыдущем и данном примере размер двумерного списка может также задаваться на входе, т.е., например, с клавиатуры или из файла.
Существует множество задач на двумерные списки. Желательно их прорешать, поскольку с практической точки зрения это полезный материал.
Вот одна из таких задач. Имеется двумерный список. Нужно вывести его элементы "змейкой". Выводится в начале нулевая строка слева направо. Потом следующая строка справа налево. И т.д. Можно сказать и по-другому: четные строки выводятся слева направо, нечетные справа налево. В следующем пример показан пример такого решения. Внешний цикл - это проход по строкам списка. Два внутренних цикла выполняются по-очереди, в зависимости от значения флага f.
В программировании часто используется такой прием - разворачивание цикла. Т.е. цикл заменяется последовательностью операторов. Часто такой подход оптимизирует программу с точки зрения времени выполнения. При этом количество операторов может увеличиться.
Ниже представлен такой вариант решения той же задачи. Внутренние циклы уходят, но зато количество итераций внешнего цикла увеличивается. Программирование неисчерпаемо для творчества.
Всего наилучшего. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.
#программирование #программисты #python #языки программирования