#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тыс. результатов
Как вы можете видеть, список списков является наиболее часто используемым.