одинаковую структуру данных под капотом и вся разница только в том, что для списка питон выделяет дополнительные пустые ячейки для оптимизации? А у кортежа просто нет методов по типу append?
А что именно?
В общих чертах — реализации в целом очень похожи (заголовок плюс указатель на массив указателей), но у туплов за счёт отсутствия возможности изменения всё несколько обкусано и оптимизировано (в том числе под частные случаи).
Примерно так: typedef struct { PyObject_VAR_HEAD /* Vector of pointers to list elements. list[0] is ob_item[0], etc. */ PyObject **ob_item; Py_ssize_t allocated; } PyListObject; ... typedef struct { PyObject_VAR_HEAD /* ob_item contains space for 'ob_size' elements. Items must normally not be NULL, except during construction when the tuple is not yet visible outside the function that builds it. */ PyObject *ob_item[1]; } PyTupleObject;
Обсуждают сегодня