Почему Python обрабатывает кортежи, списки, наборы и словари как принципиально разные вещи?

Одна из причин, по которой я люблю Python, - это выразительная мощь / меньшие усилия по программированию, обеспечиваемые кортежами, списками, наборами и словарями. Как только вы поймете list com постижения и несколько основных паттернов с использованием в и для , жизнь становится намного лучше! Python качается.

Однако мне интересно, почему к этим конструкциям относятся так же по-разному, как они есть, и как это меняется (становится все более странным) со временем. Вернувшись в Python 2.x, я мог бы привести аргумент, что все они были всего лишь вариациями базового типа коллекции, и было немного раздражающим то, что некоторые неэкзотические варианты использования требуют, чтобы вы преобразовали словарь в список и обратно очередной раз. (Разве словарь не является просто списком кортежей с определенным ограничением уникальности? Разве список не является просто набором с другим типом ограничения уникальности?)

Теперь в мире 3.x это стало более сложным . Теперь есть именованные кортежи - они начинают больше походить на словарь для особых случаев. Теперь есть упорядоченные словари - они начинают больше походить на список. А я только что увидел рецепт заказанных наборов. Я могу представить, как это продолжается и продолжается ...как насчет уникальных списков и т. д.

Дзен Python говорит: «Должен быть один - и желательно только один - очевидный способ сделать это». Мне кажется, что такое изобилие специализированных типов коллекций противоречит этому правилу Python.

Что думают заядлые питонисты?

23
задан Chris Johnson 27 August 2019 в 16:38
поделиться