Список - это последовательность, но последовательность не обязательно является списком. Последовательность - это любой тип, который поддерживает интерфейс последовательности («протокол»). Это делается с помощью Duck-typing, а не с помощью строгой иерархии наследования. Обратите внимание, что последовательности являются контейнерами, но контейнеры не обязательно являются последовательностями. (последовательности, ну, последовательно!)
См. http://docs.python.org/library/stdtypes.html#sequence-types-str-unicode-list-tuple-buffer-xrange
Объекты среза обычно создаются неявно с помощью синтаксического сахара (foo[2:5]
) и предоставляются специальным методам типа контейнера (например, __getitem__
), которые можно переопределить. Как правило, вам не придется иметь дело со слайсами, если только вы не создадите свои собственные последовательности / контейнеры.
См. http://docs.python.org/reference/datamodel.html#specialnames
Списки сопоставимы с массивами. Я не уверен, но я думаю, что он реализован в cPython как динамически расширяемый массив. Тем не менее, интерфейс делает его таким, что он больше похож на вектор C ++ STL, чем на простой старый массив.