Наборы и списки обрабатываются по-разному в Python, и, похоже, не существует единого способа работы с обоими. Например, добавление элемента в set
выполняется методом add
, а для list
- методом append
. Я знаю, что за этим стоит другая семантика, но есть и общая семантика, и часто алгоритм, который работает с некоторыми коллекциями, больше заботится об общности, чем о различиях. C ++ STL показывает, что это может работать, так почему же в Python такого понятия нет?
Редактировать: В C ++ я могу использовать output_iterator
для хранения значений в (почти) произвольном типе коллекции, включая списки и наборы. Я могу написать алгоритм, который принимает такой итератор в качестве аргумента и записывает в него элементы. Алгоритм тогда совершенно не зависит от типа контейнера (или другого устройства, может быть файлом), который поддерживает итератор. Если резервный контейнер является набором, который игнорирует дубликаты, то это решение вызывающей стороны. Моя конкретная проблема заключается в том, что это происходило со мной несколько раз, когда я использовал, например, list
для определенной задачи, а затем решил, что set
более уместно. Теперь я должен изменить append
на add
в нескольких местах в моем коде. Мне просто интересно, почему Python не имеет понятия для таких случаев.