Рубрики
Без рубрики

Длина списка Python – какая сложность выполнения Len ()?

Сложность выполнения функции Len () в вашем списке Python – O (1). Требуется постоянное время выполнения независимо от того, сколько элементов в списке. Почему? Поскольку объект списка поддерживает целочисленный счетчик, который увеличивается и уменьшается при добавлении и удалении элементов списка. Глядя вверх ценность этого счетчика принимает постоянные … Длина списка Python – какая сложность выполнения Len ()? Подробнее “

Автор оригинала: Chris.

Сложность времени выполнения Лен () Функция в вашем списке Python составляет O (1). Требуется постоянное время выполнения независимо от того, сколько элементов в списке. Почему? Поскольку объект списка поддерживает целочисленный счетчик, который увеличивается и уменьшается при добавлении и удалении элементов списка. Глядя вверх ценность этого счетчика занимает постоянное время.

Объекты списка Python отслеживают свою собственную длину. Когда вы называете функцию Лен (...) На объекте списка вот что происходит (примерно):

  • Виртуальная машина Python выглядит вверх Лен (...) Функция в словаре, чтобы найти связанную реализацию.
  • Вы передаете объект списка как аргумент для Лен () Функция, поэтому виртуальная машина Python проверяет __len__ Способ объекта списка.
  • Способ реализован в C ++, и это просто счетчик, который увеличивается каждый раз, когда вы добавляете элемент в список и уменьшились, если вы удалите элемент из списка. Например, скажем, переменная Длина хранит текущую длину списка. Затем метод возвращает значение self.length Отказ
  • Выполнено.

Вот фрагмент Реализация C ++ Из списка структура данных:

static int
list_resize(PyListObject *self, Py_ssize_t newsize)
{
    PyObject **items;
    size_t new_allocated, num_allocated_bytes;
    Py_ssize_t allocated = self->allocated;

    // some implementation details

    Py_SET_SIZE(self, newsize);
    self->allocated = new_allocated;
    return 0;
}

Что такое сложность выполнения других методов списка Python?

Вот стол, основанная на Официальный Python Wiki :

Эксплуатация Средний случай Амортизированный худший случай
Копировать () На) На)
Приложение () O (1) O (1)
поп () O (1) O (1)
поп (я) Ok) Ok)
вставлять() На) На)
Список [я] O (1) O (1)
O (1) O (1)
Удалить (х) На) На)
Для меня в списке На) На)
Список [I: J] Ok) Ok)
del list [i: j] На) На)
O (k + n) O (k + n)
продлевать() Ok) Ok)
Сортировать() O (n log n) O (n log n)
[…] * 10 O (NK) O (NK)
х в Льсте На)
min (lst), max (lst) На)
ЛЕН (LST) O (1) O (1)

Список Python реализован с использованием массива C ++. Это означает, что обычно медленно изменяет элементы в начале каждого списка, потому что все элементы должны быть смещены вправо. Если вы добавите элемент в конец списка, он обычно быстро. Тем не менее, изменение размера массива может время от времени стать медленными, если для массива необходимо выделить больше памяти.

Статьи по Теме:

  • Окончательное руководство по спискам Python

Куда пойти отсюда

Если вы продолжаете бороться с теми основными командами Python, и вы чувствуете застрявшие в своем прогрессе обучения, у меня есть что-то для вас: Python One-listers (Amazon Link).

В книге я дам вам тщательный обзор темы критических компьютерных наук, таких как машинное обучение, регулярное выражение, наука о данных, Numpy и Python Basics – все в одной линейке кода Python!

Получите книгу от Amazon!

Официальная книга Описание: Python One-Listers покажет читателям, как выполнить полезные задачи с одной строкой кода Python. Следуя краткому переподготовку Python, книга охватывает важные продвинутые темы, такие как нарезка, понимание списка, вещание, функции лямбда, алгоритмы, регулярные выражения, нейронные сети, логистические регрессии и др .. Каждая из 50 секций книг вводит проблему для решения, проходит читателя через навыки, необходимые для решения этой проблемы, затем предоставляет краткое однонаправленное решение Python с подробным объяснением.

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python одноклассники (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.

Оригинал: “https://blog.finxter.com/python-list-length-whats-the-runtime-complexity-of-len/”