Какая наиболее часто используемая терминология для 2d-массива / списка списков в Python?

#python #standards #terminology

#python #стандарты #терминология

Вопрос:

Поскольку в Python list — это встроенный тип данных, а не массив, я вижу, что многие вопросы в python относятся к этому типу данных по-разному, как к 2d-массиву, 2d-списку, списку списков, таблице и множеству других выражений. Какой наиболее подходящий стандарт?

Комментарии:

1. Похоже, что было единогласное голосование в пользу «списка списков».

Ответ №1:

Я думаю, что только «список списков» имеет смысл. Такие термины, как «2d-массив» и «таблица», вводят в заблуждение, подразумевая, что табличная структура отслеживается или кодируется в данных, а это не так. То есть, если у вас есть [[1, 2], [3, 4], [5, 6]] , ничто не мешает вам добавить элемент только в один из списков для получения [[1, 2], [3, 4, 88], [5, 6]] , который больше не является табличной структурой, поскольку «строки» имеют разную длину. Внешний список не «знает», что он содержит другие списки, поэтому его нельзя использовать каким-либо особым образом как «таблицу»; это просто список, и если вы хотите использовать списки внутри него, вы должны получить их, как и любой другой список предмет.

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

Комментарии:

1. Ну, на данный момент, но с Python 3.5 @ оператор будет делать списки более похожими на матрицы…

2. Или я должен сказать, сделать термин matrix лучшим термином для конкретных списков.

3. @user667648: Оператор @ не будет работать со списками, см. PEP . Он добавляется для работы с массивами numpy и другими подобными структурами.

4. Извините! Мой плохой! Не осознавал этого!

Ответ №2:

Для справки, я профессионально пишу код уже несколько лет и только 2 месяца назад начал работать на новой работе, где мы используем python. Я чувствую, что большинство людей, изучающих python, поймут, о чем вы говорите, если вы скажете: «эта функция принимает 2D-массив данных». Но, как заявил мистер Бренбарн, я думаю, что «правильной» терминологией был бы список списков. Списки Python более изменчивы, чем другие типичные массивы. Во многих языках массив относится к ряду похожих значений, таких как массив целых чисел или массив строк. Списки Python не ограничены одним гетерогенным типом данных в списке, и поэтому я думаю, что использование терминологии list или list of lists — это правильный путь, если вы хотите быть корректным. Лично у меня в памяти запечатлелось, что я просто называю это массивом.

Ответ №3:

Я не рок-звезда в python, но, учитывая природу list, я думаю, что было бы более уместно вызывать list списка. Однако допустимо называть это N-мерным списком.

Просто для любопытства, если вы ищете в Google:

  • 2d-массив python: 853 тыс. результатов
  • список python 2d: 2,590k результатов
  • список списков python: 68 300тыс. результатов

Как вы можете видеть, список списков является наиболее часто используемым.