array — Effiziente Arrays numerischer Werte¶
Dieses Modul definiert einen Objekttyp, der effizient Arrays von Basiswerten darstellen kann: Zeichen, ganze Zahlen, Gleitkommazahlen. Arrays sind Sequenztypen und verhalten sich sehr ähnlich wie Listen, außer dass der Typ der darin gespeicherten Objekte eingeschränkt ist. Der Typ wird bei der Objekterstellung durch einen einzelnen Buchstaben, den sogenannten Typcode, festgelegt. Die folgenden Typcodes sind definiert:
Typcode |
C-Typ |
Python-Typ |
Minimale Größe in Bytes |
Hinweise |
|---|---|---|---|---|
|
signed char |
int |
1 |
|
|
unsigned char |
int |
1 |
|
|
wchar_t |
Unicode-Zeichen |
2 |
(1) |
|
Py_UCS4 |
Unicode-Zeichen |
4 |
(2) |
|
signed short |
int |
2 |
|
|
unsigned short |
int |
2 |
|
|
signed int |
int |
2 |
|
|
unsigned int |
int |
2 |
|
|
signed long |
int |
4 |
|
|
unsigned long |
int |
4 |
|
|
signed long long |
int |
8 |
|
|
unsigned long long |
int |
8 |
|
|
float |
float |
4 |
|
|
double |
float |
8 |
Hinweise
Dies kann je nach Plattform 16 oder 32 Bits sein.
Geändert in Version 3.9:
array('u')verwendet nunwchar_tals C-Typ anstelle des veraltetenPy_UNICODE. Diese Änderung hat keinen Einfluss auf das Verhalten, daPy_UNICODEseit Python 3.3 ein Alias vonwchar_tist.Veraltet seit Version 3.3, wird entfernt in Version 3.16: Bitte migrieren Sie zum Typcode
'w'.Hinzugefügt in Version 3.13.
Die tatsächliche Darstellung der Werte wird durch die Maschinenarchitektur bestimmt (genauer gesagt durch die C-Implementierung). Die tatsächliche Größe kann über das Attribut array.itemsize abgerufen werden.
Das Modul definiert die folgende Elementgruppe
- array.typecodes¶
Ein String mit allen verfügbaren Typcodes.
Das Modul definiert den folgenden Typ
- class array.array(typecode[, initializer])¶
Ein neues Array, dessen Elemente durch typecode eingeschränkt und aus dem optionalen Wert initializer initialisiert werden. Dieser muss ein
bytes- oderbytearray-Objekt, ein Unicode-String oder ein Iterable von Elementen des entsprechenden Typs sein.Wenn ein
bytes- oderbytearray-Objekt übergeben wird, wird der Initialisierer an diefrombytes()-Methode des neuen Arrays übergeben; wenn ein Unicode-String übergeben wird, wird der Initialisierer an diefromunicode()-Methode übergeben; andernfalls wird das Iterator des Initialisierers an dieextend()-Methode übergeben, um initiale Elemente zum Array hinzuzufügen.Array-Objekte unterstützen die üblichen Sequenzoperationen wie Indizierung, Slicing, Verkettung und Multiplikation. Bei der Zuweisung über Slices muss der zugewiesene Wert ein Array-Objekt mit demselben Typcode sein; in allen anderen Fällen wird ein
TypeErrorausgelöst. Array-Objekte implementieren auch die Puffer-Schnittstelle und können überall dort verwendet werden, wo bytes-ähnliche Objekte unterstützt werden.Löst ein Auditing-Ereignis
array.__new__mit den Argumententypecodeundinitializeraus.- typecode¶
Das zur Erstellung des Arrays verwendete Typcode-Zeichen.
- itemsize¶
Die Länge in Bytes eines Array-Elements in der internen Darstellung.
- append(x)¶
Hängt ein neues Element mit dem Wert x an das Ende des Arrays an.
- buffer_info()¶
Gibt ein Tupel
(address, length)zurück, das die aktuelle Speicheradresse und die Länge in Elementen des Puffers angibt, der zum Speichern der Array-Inhalte verwendet wird. Die Größe des Speicherpuffers in Bytes kann alsarray.buffer_info()[1] * array.itemsizeberechnet werden. Dies ist manchmal nützlich bei der Arbeit mit Low-Level (und inhärent unsicheren) E/A-Schnittstellen, die Speicheradressen erfordern, wie z. B. bestimmteioctl()-Operationen. Die zurückgegebenen Zahlen sind gültig, solange das Array existiert und keine längenverändernden Operationen darauf angewendet werden.Hinweis
Wenn Array-Objekte aus Code in C oder C++ verwendet werden (der einzige Weg, diese Informationen effektiv zu nutzen), ist es sinnvoller, die von Array-Objekten unterstützte Puffer-Schnittstelle zu verwenden. Diese Methode wird aus Gründen der Abwärtskompatibilität beibehalten und sollte in neuem Code vermieden werden. Die Puffer-Schnittstelle ist im Pufferprotokoll dokumentiert.
- byteswap()¶
Vertauscht die Byte-Reihenfolge aller Elemente des Arrays. Dies wird nur für Werte unterstützt, die 1, 2, 4 oder 8 Bytes groß sind; für andere Werttypen wird ein
RuntimeErrorausgelöst. Dies ist nützlich beim Lesen von Daten aus einer Datei, die auf einer Maschine mit anderer Byte-Reihenfolge geschrieben wurde.
- count(x)¶
Gibt die Anzahl der Vorkommen von x im Array zurück.
- extend(iterable)¶
Hängt Elemente aus iterable an das Ende des Arrays an. Wenn iterable ein anderes Array ist, muss es *exakt* denselben Typcode haben; andernfalls wird ein
TypeErrorausgelöst. Wenn iterable kein Array ist, muss es iterierbar sein und seine Elemente müssen den richtigen Typ für die Aufnahme in das Array haben.
- frombytes(buffer)¶
Hängt Elemente aus dem bytes-ähnlichen Objekt an und interpretiert seinen Inhalt als ein Array von Maschinenwerten (als ob es mit der Methode
fromfile()aus einer Datei gelesen worden wäre).Hinzugefügt in Version 3.2:
fromstring()wird zur besseren Klarheit infrombytes()umbenannt.
- fromfile(f, n)¶
Liest n Elemente (als Maschinenwerte) aus dem Datei-Objekt f und hängt sie an das Ende des Arrays an. Wenn weniger als n Elemente verfügbar sind, wird ein
EOFErrorausgelöst, aber die verfügbaren Elemente werden dennoch in das Array eingefügt.
- fromlist(list)¶
Hängt Elemente aus der Liste an. Dies ist äquivalent zu
for x in list: a.append(x), außer dass das Array unverändert bleibt, wenn ein Typfehler auftritt.
- fromunicode(s)¶
Erweitert dieses Array mit Daten aus dem gegebenen Unicode-String. Das Array muss den Typcode
'u'oder'w'haben; andernfalls wird einValueErrorausgelöst. Verwenden Siearray.frombytes(unicodestring.encode(enc)), um Unicode-Daten an ein Array eines anderen Typs anzuhängen.
- index(x[, start[, stop]])¶
Gibt den kleinsten Index i zurück, sodass i der Index des ersten Vorkommens von x im Array ist. Die optionalen Argumente start und stop können angegeben werden, um x innerhalb eines Unterabschnitts des Arrays zu suchen. Löst
ValueErroraus, wenn x nicht gefunden wird.Geändert in Version 3.10: Optionale Parameter start und stop hinzugefügt.
- insert(i, x)¶
Fügt ein neues Element mit dem Wert x an der Position i in das Array ein. Negative Werte werden relativ zum Ende des Arrays behandelt.
- pop([i])¶
Entfernt das Element mit dem Index i aus dem Array und gibt es zurück. Das optionale Argument ist standardmäßig
-1, sodass standardmäßig das letzte Element entfernt und zurückgegeben wird.
- remove(x)¶
Entfernt das erste Vorkommen von x aus dem Array.
- clear()¶
Entfernt alle Elemente aus dem Array.
Hinzugefügt in Version 3.13.
- reverse()¶
Kehrt die Reihenfolge der Elemente im Array um.
- tobytes()¶
Konvertiert das Array in ein Array von Maschinenwerten und gibt die Byte-Darstellung zurück (dieselbe Byte-Sequenz, die mit der Methode
tofile()in eine Datei geschrieben würde).Hinzugefügt in Version 3.2:
tostring()wird zur besseren Klarheit intobytes()umbenannt.
- tofile(f)¶
Schreibt alle Elemente (als Maschinenwerte) in das Datei-Objekt f.
- tolist()¶
Konvertiert das Array in eine normale Liste mit denselben Elementen.
- tounicode()¶
Konvertiert das Array in einen Unicode-String. Das Array muss den Typ
'u'oder'w'haben; andernfalls wird einValueErrorausgelöst. Verwenden Siearray.tobytes().decode(enc), um einen Unicode-String aus einem Array eines anderen Typs zu erhalten.
Die String-Darstellung von Array-Objekten hat die Form array(typecode, initializer). Der initializer wird weggelassen, wenn das Array leer ist, andernfalls ist er ein Unicode-String, wenn der typecode 'u' oder 'w' ist, andernfalls ist es eine Liste von Zahlen. Die String-Darstellung kann garantiert mit eval() wieder in ein Array mit demselben Typ und Wert konvertiert werden, vorausgesetzt, die Klasse array wurde mit from array import array importiert. Die Variablen inf und nan müssen ebenfalls definiert sein, wenn sie entsprechende Gleitkommawerte enthalten. Beispiele
array('l')
array('w', 'hello \u2641')
array('l', [1, 2, 3, 4, 5])
array('d', [1.0, 2.0, 3.14, -inf, nan])