Список Dar: двумерные данные и индексы

Концептуальное объяснение двумерных списков: прямоугольная и неровная формы, нулевая нумерация индексов, проверка границ и пример обхода сетки часов и датчиков.

Двумерный список: прямоугольная сетка строк и столбцов с нулевой нумерацией индексов и границами обхода

Назначение

Двумерный список хранит данные, расположенные по строкам и столбцам. Такой способ организации удобен, когда значения образуют таблицу: измерения по времени и датчикам, ячейки листа, пиксели изображения. Читатель, работающий с подобными структурами, должен уметь выбирать форму данных и правильно обращаться к элементам по индексам.

Имена и обозначения

Идентификатор Dar встречается в сохранённом заголовке и в ссылке главной страницы, где он подписан как двумерный список. Название Tar появляется в поисковом заголовке, но само по себе не доказывает, что это синоним Dar или другой подтверждённый термин для той же структуры. Точное написание кодового имени, задокументированная форма данных и выбранная концептуальная таблица — три отдельные вещи: совпадение контекста не заменяет проверки контракта операции. Перед заменой или отождествлением имён сверяйтесь с документацией конкретной реализации.

Представление данных

Выбранная прямоугольная модель имеет фиксированное число строк и столбцов: каждая строка содержит одинаковое количество элементов. Вложенные списки могут иметь иную форму: длины строк различаются, и такую структуру называют неровной. Обе формы допустимы как концептуальные решения; ни одна из них не является обязательной для всех двумерных структур. В прямоугольной модели с нулевой нумерацией запись (2,0) означает третью строку и первый столбец, если это объявлено как пример.

Границы индексов

Для концептуальной прямоугольной модели с неотрицательным целым числом строк R и столбцов C корректные нулевые целочисленные индексы удовлетворяют условиям 0 <= r < R и 0 <= c < C. Проверка включает оба предела: нижний и верхний. Отрицательный индекс не становится допустимым только потому, что он меньше верхнего предела. Для неровной структуры верхняя граница столбцов зависит от конкретной строки: для строки r допустимы значения c < L(r), где L(r) — длина этой строки.

Пример: сетка часов и датчиков

Рассмотрим гипотетическую концептуальную сетку с 24 строками и 8 столбцами, где строка соответствует часу суток, а столбец — датчику. Объявляем нулевую нумерацию: час 0 означает 00:00. Тогда запись (14,3) указывает на час 14 и четвёртый датчик, потому что индекс 3 в нулевой нумерации является четвёртым по счёту. Обход такой сетки обычно выполняют двумя вложенными циклами: внешний перебирает строки от 0 до 23, внутренний — столбцы от 0 до 7. Для каждой пары индексов можно вычислить сумму, максимум или среднее по строке. Это пример концептуального алгоритма, а не псевдокод конкретной функции.

Ограничения

Описанные правила относятся к выбранной концептуальной модели, а не к любой реализации двумерного списка. Порядок хранения элементов в памяти, способ изменения размеров и поведение при выходе за границы зависят от конкретной системы и не выводятся из самого факта двумерности. При работе с реальным API необходимо сверяться с его документацией: сигнатура, коды ошибок и допустимые типы индексов могут отличаться от приведённых здесь общих условий.