/ / Wie speichern dynamische Arrays unterschiedliche Datentypen? - Python, Liste

Wie speichern dynamische Arrays unterschiedliche Datentypen? - Python, Liste

Woher weiß die Sprache, wie viel Platz sie haben?Reserve für jedes Element? Oder reserviert es den maximal möglichen Platz für einen Datentyp? (Sprechen Sie über große Fließkommazahlen). In diesem Fall ist es nicht ein bisschen ineffizient?

Antworten:

1 für die Antwort № 1

Python reserviert nur genügend Platz in einer Liste für ein Referenz zu den verschiedenen Objekten; es liegt an den "Zuweisern" der Objekte, ihnen genügend Platz zu reservieren, wenn sie es sind instanziiert.


1 für die Antwort № 2

Arrays in Python werden über die array Modul. Sie speichern keine unterschiedlichen Datentypen, sie speichern Arrays mit bestimmten numerischen Werten.

Ich denke du meinst das list Art. Es enthält keine Werte, es enthält nur Verweise auf Objekte, die ein beliebiger Objekttyp sein können.

Keine von diesen reserviert Raum für irgendwelche Elementeüberhaupt (naja, das tun sie, aber das sind die internen Implementierungsdetails.) Es fügt den Platz für die Elemente hinzu, die benötigt werden, wenn sie der Liste / dem Array hinzugefügt werden.

Der Listentyp ist in der Tat weniger effizient als der Array-Typ, weshalb der Array-Typ existiert.


0 für die Antwort № 3

Es ist ein Array von Referenzen, speichert nur Referenzen auf Elemente Objekte. Die Größe jedes Blocks ist also spezifisch.

http://docs.python.org/2/faq/design.html#how-are-lists-implemented


0 für die Antwort № 4

In C-Sprache ist eine Python-Liste wie eine PyObject *mylist[100], außer es ist dynamisch zugeordnet. Es ist ein zusammenhängender Teil des Speichers, der Verweise auf Python-Objekte speichert.