Frage

Ich konnte keine Quelle für diese Informationen finden, es sei denn, ich habe selbst den Python-Quellcode durchgesehen, um festzustellen, wie die Objekte funktionieren.Weiß jemand, wo ich das online finden könnte?

War es hilfreich?

Lösung

Besuche die Zeitkomplexität Seite im py dot org Wiki.Es deckt set/dicts/lists/usw. ab, zumindest was die zeitliche Komplexität betrifft.

Andere Tipps

Raymond D.Hettinger tut es ein ausgezeichneter Vortrag (Folien) über Pythons integrierte Sammlungen mit dem Namen „Core Python Containers – Under the Hood“.Die Version, die ich gesehen habe, konzentrierte sich hauptsächlich auf set Und dict, Aber list war auch abgedeckt.

Es gibt auch einige Fotos der dazugehörigen Folien von EuroPython in ein Blog.

Hier ist eine Zusammenfassung meiner Notizen zu list:

  • Speichert Elemente als Array von Zeigern.Der Index kostet O(1) Zeit.Kosten anhängen, amortisiert O(1) Zeit.Das Einfügen kostet O(n) Zeit.
  • Versucht zu vermeiden memcpy beim Wachstum durch Überzuteilung.Viele kleine Listen verschwenden viel Platz, aber große Listen verschwenden nie mehr als etwa 12,5 % durch Überbelegung.
  • Einige Vorgänge sind vorab dimensioniert.Angeführte Beispiele waren range(n), map(), list(), [None] * n, und schneiden.
  • Beim Verkleinern ist das Array reallocWird nur dann verwendet, wenn 50 % des Speicherplatzes verschwendet werden. pop ist günstig.

Wenn Sie fragen, was ich zu fragen denke, können Sie sie finden Hier...Seite 476 und weiter.

Es handelt von Optimierungstechniken für Python.Es handelt sich hauptsächlich um eine Big-O-Notation der Zeiteffizienz, nicht um viel Speicher.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top