Что касается "эквивалента по функциональности", я бы сказал, что это правда, так как они оба будут давать одинаковые результаты для Python списков.
В зависимости от сложности времени, это в значительной степени эквивалентно для списка в таком случае, поскольку реализация списка insert()
работает путем смещения элементов за индексом, таким образом, если новый элемент вставляется в конец списка, операции смещения не выполняются. Это можно проверить, посмотрев на реализацию list insert . В строке реализации вставки 248-251,
for (i = n; --i >= where; )
items[i+1] = items[i];
Py_INCREF(v);
items[where] = v;
Между тем в списке реализации добавляется
Py_INCREF(v);
PyList_SET_ITEM(self, n, v);
, где PyList_SET_ITEM
равно определяется как:
#define PyList_SET_ITEM(op, i, v) (((PyListObject *)(op))->ob_item[i] = (v))
Таким образом, поскольку where
равняется n
, что в данном случае является размером списка, значение для l oop сразу прекращается. Несколько строк после этого в значительной степени эквивалентны, то есть просто вставляют элемент в массив.
Следовательно, можно сказать, что для этого случая сложность амортизированного времени такая же, как O (1)