Questo modulo definisce un tipo di oggetto che può rappresentare in modo efficiente un array (NdT: vettore) di valori basilari: caratteri, interi, numeri in virgola mobile. Gli array sono tipi sequenza e si comportano in modo molto simile alle liste, tranne per il fatto che il tipo degli oggetti contenuti è vincolato. Il tipo viene specificato al momento della creazione dell'oggetto usando un singolo carattere chiamato type code. Vengono definiti i seguenti type code:
Type code | Tipo C | Tipo Python | Dimensione minima in byte |
---|---|---|---|
'c' |
char | character | 1 |
'b' |
signed char | int | 1 |
'B' |
unsigned char | int | 1 |
'u' |
Py_UNICODE | Unicode character | 2 |
'h' |
signed short | int | 2 |
'H' |
unsigned short | int | 2 |
'i' |
signed int | int | 2 |
'I' |
unsigned int | long | 2 |
'l' |
signed long | int | 4 |
'L' |
unsigned long | long | 4 |
'f' |
float | float | 4 |
'd' |
double | float | 8 |
La rappresentazione reale dei valori viene determinata dall'architettura
della macchina (strettamente parlando, dall'implementazione C). La
dimensione reale può essere ottenuta attraverso l'attributo
itemsize. I valori memorizzati per gli elementi 'L'
e
'I'
verranno rappresentati come interi long Python al momento
del loro recupero, poiché il tipo dei normali interi Python non
può rappresentare l'intera estensione degli interi(long) senza segno del C.
Il modulo definisce il seguente tipo:
typecode[, initializer]) |
Gli oggetti array supportano le ordinarie operazioni di indicizzazione, affettamento, concatenazione e moltiplicazione delle sequenze. Durante l'assegnazione di una fetta, il valore assegnato deve essere un oggetto array con lo stesso type code; in tutti gli altri casi, viene sollevata un'eccezione TypeError. Gli oggetti array implementano anche l'interfaccia buffer e possono essere utilizzati ovunque siano supportati gli oggetti buffer.
Vengono supportati anche i seguenti attributi e metodi:
x) |
) |
(indirizzo, lunghezza)
che
fornisce l'indirizzo di memoria corrente e la lunghezza in elementi
del buffer usato per contenere l'array. La dimensione in byte del buffer di
memoria può essere calcolato come
array.buffer_info()[1] * array.itemsize
. Questo torna
utile talvolta, quando si lavora con interfacce I/O a basso livello (e
quindi insicure) che richiedono indirizzi di memoria, come
alcune ioctl(). I numeri restituiti sono validi
a patto che l'array esista e non vengano applicate operazioni su di esso che ne
modifichino la lunghezza.
Note: Quando si usano oggetti array da codice scritto in C o C++ (il solo modo per fare effettivo utilizzo di questa informazione), ha più senso usare l'interfaccia buffer supportata dagli oggetti array. Questo metodo viene mantenuto per retrocompatibilità e bisognerebbe evitarlo nel nuovo codice. L'interfaccia buffer è documentata nel Python/C API Reference Manual.
) |
x) |
iterable) |
f, n) |
list) |
s) |
s) |
x) |
i, x) |
[i]) |
-1
, così che,
senza argomenti, pop() rimuova e restituisca l'ultimo
elemento.
f, n) |
x) |
) |
f) |
) |
) |
) |
array.tostring().decode(enc)
per ottenere una
stringa unicode da un array di altro tipo.
f) |
Quando un oggetto array viene stampato o convertito in una stringa, viene
rappresentato come array(typecode, initializer)
.
Il parametro initializer viene omesso se l'array è vuoto,
è una stringa se il type code è 'c'
, altrimenti è
una lista di numeri. Viene garantito che la stringa possa
essere riconvertita in un array dello stesso tipo e valore usando gli apici
inversi (``
), a condizione che la funzione array()
sia stata importata usando l'istruzione
from array import array
. Esempi:
array('l') array('c', 'hello world') array('u', u'hello \textbackslash u2641') array('l', [1, 2, 3, 4, 5]) array('d', [1.0, 2.0, 3.14])
Vedete anche: