estaba escribiendo una función de Python que parecía algo como esto¿Cuál es la complejidad del tiempo de ejecución de las funciones de la lista de python?
def foo(some_list):
for i in range(0, len(some_list)):
bar(some_list[i], i)
de modo que se ha llamado con
x = [0, 1, 2, 3, ... ]
foo(x)
Yo había asumido que el acceso Índice de listas fue O(1)
, pero se sorprendió al descubrir que para listas grandes, esto fue significativamente más lento de lo que esperaba.
Mi pregunta es, entonces, cómo son se implementan las listas de Python, y cuál es la complejidad de tiempo de ejecución de las siguientes
- Indexación:
list[x]
- Apareciendo desde el final:
list.pop()
- Apareciendo de la comenzando:
list.pop(0)
- ampliación de la lista:
list.append(x)
Para crédito adicional, empalme o saltos arbitrarios.
Perdona mi ignorancia, pero ¿dónde está la complejidad de 'pop()' en esa página? – Zaz
@Zaz, pop() sin índice es O (1), con índice, p. Ej. el primero en la lista, es O (n). ya que necesita obtener el elemento O (1) y luego eliminarlo. Este último toma O (n) tiempo para organizar todos los demás elementos en la lista. Más sobre eso aquí: https://www.ics.uci.edu/~pattis/ICS-33/lectures/complexitypython.txt –