Quelle est la durée de la complexité de la liste python fonctions?

J'ai écrit une fonction python qui ressemblait à quelque chose comme ceci

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'indice de l'accès des listes a été O(1), mais a été surpris de constater que pour les grandes listes cela a été nettement plus lente que ce que j'attendais.

Ma question, alors, est de savoir comment python, les listes sont mises en œuvre, et quelle est la durée de la complexité de la suite

  • Indexation: list[x]
  • Pans de la fin: list.pop()
  • Popping depuis le début: list.pop(0)
  • L'élargissement de la liste: list.append(x)

Pour le crédit supplémentaire, l'épissage ou arbitraire de la pop.

InformationsquelleAutor Marquis Wang | 2009-06-17