Я писал функцию 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)
Для дополнительного кредита, сращивания или произвольного всплытия.