je en train d'écrire une fonction de python qui avait l'air quelque chose comme çaQuelle est la complexité d'exécution des fonctions de liste Python?
def foo(some_list):
for i in range(0, len(some_list)):
bar(some_list[i], i)
de sorte qu'il a été appelé avec
x = [0, 1, 2, 3, ... ]
foo(x)
J'avais supposé que l'accès à l'index des listes était O(1)
, mais a été surpris de constater que pour les grandes listes, c'était beaucoup plus lent que prévu.
Ma question est donc comment les listes Python sont mises en œuvre, et quelle est la complexité d'exécution des opérations suivantes
- indexation:
list[x]
- Popping de la fin:
list.pop()
- Popping de la Début:
list.pop(0)
- Extension de la liste:
list.append(x)
Pour un crédit supplémentaire, un épissage ou des pops arbitraires.
Pardonnez mon ignorance, mais où est la complexité de 'pop()' sur cette page? – Zaz
@Zaz, pop() sans index est O (1), avec index, par ex. le premier sur la liste, c'est O (n). puisque vous devez obtenir l'élément O (1), puis le supprimer. Ce dernier prend le temps O (n) pour organiser tous les autres éléments de la liste. Plus sur cela ici: https://www.ics.uci.edu/~pattis/ICS-33/lectures/complexitypython.txt –