Я писал функцию Python, которая выглядела примерно так
def foo(some_list):
for i in range(0, len(some_list)):
bar(some_list[i], i)
чтобы оно вызывалось с
x = [0, 1, 2, 3, ... ]
foo(x)
Я предполагал, что индексный доступ к спискам O(1)
, но был удивлен, обнаружив, что для больших списков это было значительно медленнее, чем я ожидал.
Тогда мой вопрос: как реализованы списки Python и какова сложность во время выполнения следующего
- Индексирование:
list[x]
- Отрываясь от конца:
list.pop()
- Отпуск с начала:
list.pop(0)
- Расширение списка:
list.append(x)
Для дополнительного кредита, сплайсинга или произвольных всплывающих окон.