@argumentum

Как лучше смоделировать таблицу двумерным списком?

Доброго времени суток.

Смоделировать таблицу с помощью двумерного списка можно двумя способами:

1) Первый индекс будет как бы колонками, а второй индекс - соответственно, строками
2) Наоборот, первый индекс будет строками, второй - колонками.

Первый способ по-моему, удобнее, так как при этом легко можно манипулировать колонками. Например, если в таблице 5 колонок, а надо оставить первую и четвертую - list[0] будет первой колонкой со всеми строками, list[3] - четвертой.

Кроме того, если надо обработать данные в отдельных колонках (что достаточно часто бывает нужно) - проще эту колонку обрабатывать, передавать как параметр в функции.

Но, что интересно, в достаточно солидных источниках используется второй подход - когда строки представлены первым индексом, а колонки - вторым. (Какие конкретно были источники уже забыл, так как, когда встречал это - было неактуально, один из них - кажется, библиотека pandas)

Хотелось бы знать, как будет правильнее и почему.
  • Вопрос задан
  • 272 просмотра
Пригласить эксперта
Ответы на вопрос 3
Правильнее не использовать неподходящие структуры данных. В данном случае список - совершенно неподходящая структура данных. Используйте обычный двумерный массив. Как правило первый индекс оперирует колонками, второй столбцами.
Ваши кейсы решаются элементарно при помощи различных функций для работы с массивами (они есть во многих языках). Например для того чтобы оставить 1 и 5 можно использовать map.

Очевидно, что самый частый кейс - это отфильтровать строки по некоторому фильтру. Для этого ваша организация данных никуда не годится. А в случае с хранением строк - всё элементарно.
Ответ написан
@Alexander1705
На самом деле нет никакой разницы, строки и колонки - только дело вашей интерпретации.
Вы можете считать, что первый индекс это строки, тогда можно оперировать с отдельной строкой, можете считать первый индекс колонкой, если нужно оперировать с отдельными колонками. Вы просто выбираете тот способ, что подходит для вашей задачи.
Если разницы нет, действительно, принято считать, что первый индекс - номер строки, это удобней для вывода и ввода таблиц.
Ответ написан
Комментировать
@fireSparrow
Как уже сказали другие комментаторы, чаще всё-таки нужно производить операции над строками (добавление, удаление, выборка по фильтру).
Если вы ожидаете, что вам этого не нужно будет, зато нужны будут операции со столбцами, вы можете использовать тот подход, который вам кажется более удачным именно для вашего случая.

Но, имхо, самым лучшим будет просто написать свой класс, который будет предоставлять удобные интерфейсы для работы как со строками, так и со столбцами.

Например, можно сделать так, чтобы в этом классе table.rows[0] отображало первую строчку, а table.cols[0] - первый столбец. Плюс, дополнительно прикрутить выборку по строкам и колонкам.
Например, вот так table.select_cols(1,5)

Тут уже всё зависит от вашей фантазии, вы можете реализовать столько удобных интерфейсов, сколько сможете вообразить. И для вас (или другого пользователя этого класса) вообще не будет никакой разницы, как там организованна внутренняя структура данных, потому что работать вы будете только с удобными интерфейсами, которые вы напишете именно под ваши задачи.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы