Seite 2 von 2

Re: Array mit fester Größe erstellen?

Verfasst: Mittwoch 27. April 2011, 21:51
von 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ß

Re: Array mit fester Größe erstellen?

Verfasst: Mittwoch 8. Mai 2019, 18:33
von grafpatron
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.

Re: Array mit fester Größe erstellen?

Verfasst: Mittwoch 8. Mai 2019, 19:18
von __deets__
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.