Какова эффективность нарезки списка Python? - PullRequest
1 голос
/ 12 ноября 2019

Мне интересно, какова эффективность нарезки списков в Python?

Например:

myList = [1, 2, 3, 4, 5]
newList = myList[1:4]

Я ищу нотацию big-O (например, O(n)).

1 Ответ

6 голосов
/ 12 ноября 2019

Это O(n) для list с, и большинство типов последовательностей, так как разрезание для большинства типов выполняет поверхностное копирование, оно не создает представления исходных данных.

Для некоторых типов, таких какmemoryview, или сторонние типы, такие как numpy массивы, срезы делают представления, а не копируют, поэтому стоимость составляет O(1), поскольку создание представления имеет одинаковую стоимость независимо от размера представления. Недостатком является то, что это может поддерживать огромные ассигнования, потому что существует единственное представление для небольшой части распределения;этот недостаток , почему большинство встроенных типов используют стратегию копирования вместо стратегии просмотра.

...