Array mit fester Größe erstellen?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
problembär

Nochmal zur Ausgangsfrage:
einfachich hat geschrieben:in Sprachen wie Java und C muss man beim Anlegen eines Array die Größe festlegen,also die Anzahl der zu speichernden Elemente.

Ich weiß, dass man in Python ein Array anlegt mit:
a = []

Elemente fügt man hinzu mit:
a.append(45)
a.append(345)
a.append(12)
usw...

Das geht zwar recht bequem aber die Laufzeit lässt zu wünschen übrig ...

Deshalb möchte ich von Beginn an die Größe fest vorgeben und über die Indizes auf die einzelnen Elemente zugreifen.
Erstmal: In Python ist die Philosophie eine andere: Es gibt veränderliche Listen

Code: Alles auswählen

a = [1, 2, 3]
(sehr bequem) und dann gibt es noch unveränderliche Tuples

Code: Alles auswählen

a = (1, 2, 3)
damit es, wenn man von vornherein weiß, daß es unveränderlich sein wird (z.B. bei konstanten Daten) schneller laufen kann.
Aber eigentlich ist Ziel des Datentyps "Liste", daß der Programmierer es möglichst leicht hat. Die geringere Laufzeitgeschwindigkeit des Programms wird dabei bewußt in Kauf genommen. Dafür ist der Programmierer schneller.

Das, was Du machen willst, kannst Du entweder über eine voll initialisierte Liste erreichen (s.o. den Beitrag von numerix) oder Du schreibst ein Python-Modul in C, das Du kompilieren und in Python einbinden kannst (sog. Extension). Man kann also Python und C mischen, wenn man denn will. Dabei schreibst Du also C-Code, der von Python aus angesteuert werden kann. Dann hast Du Dein C wieder. Mit all den Schwierigkeiten, die das mit sich bringt.

Gruß
grafpatron
User
Beiträge: 1
Registriert: Mittwoch 8. Mai 2019, 18:31

arr = [None] * Größe

-> dabei ist "None" ein fester Begriff, der sozusagen ein Array mit einem Element erstellt, welches aber undefiniert ist, wie eine undefinierte Variable bei Java: int variable;

Mit der Größe multipliziert ergibt sich dann ein Array mit einer festen Größe, wobei jedes Element noch nicht definiert ist.
__deets__
User
Beiträge: 14527
Registriert: Mittwoch 14. Oktober 2015, 14:29

Also eigentlich ist die Frage ja seit 8 Jahren beantwortet...

Und leider weist deine Antwort auch ein paar Lücken auf. Zum einen ist None keine ein-elementige Liste. Sondern eine Konstante wie null in Java. [None] ist die einelementige Liste, die None enthält. Und dann ist

int etwas;

genau KEINE uninitialiserte Variable. Sondern 0. Wenn wäre

Integer etwas;

das Äquivalent - das ist null, weil uninitialisiert.
Antworten