5.6 array --- Tableaux efficaces de valeurs numériques

Ce module définit un nouveau type d'objet qui peut représenter efficacement un tableau de valeurs basiques: caractères, entiers, nombres à virgule flottante. Les tableaux sont des types séquence et se comportent à beaucoup d'égards comme des listes, sauf que le type d'objets stockés est contraint. Ce type est spécifié au moment de la création de l'objet en utilisant un code de type, qui est constitué d'un caractère unique. Les codes de type suivants sont définis:

Code de type Type C Taille minimum en octets 
'c'caractère1
'b'entier signé1
'B'entier non signé1
'h'entier signé2
'H'entier non signé2
'i'entier signé2
'I'entier non signé2
'l'entier signé4
'L'entier non signé4
'f'flottant4
'd'double8

La représentation effective des valeurs est déterminée par l'architecture de la machine (au sens strict, par l'implémentation du C). On peut accéder à la taille effective à travers l'attribut itemsize. Les valeurs stockées dans les éléments 'L' et 'I' seront représentés comme des entiers longs Python quand on les extrait, parce le type entier simple de Python ne peut pas représenter l'étendue complète des entiers non signés (longs) du C.

Le module définit les fonction et objet type suivants:

array(codetype[, initialiseur])
Retourne un nouveau tableau dont les éléments sont restreints par codetype, et initialisés à partir de la valeur optionnelle initialiseur, qui doit être une liste ou une chaîne de caractères. La liste ou chaîne de caractères est passée à la méthode fromlist() ou fromstring() du nouveau tableau (voir ci-dessous) pour ajouter des éléments initiaux au tableau.

ArrayType
Objet type correspondant aux objets retournés par array().

Les objets Array supportent les éléments de données et les méthodes suivants:

arraytypecode
Le caractère de code de type utilisé pour créer le tableau.

arrayitemsize
La longueur en octets d'un élément du tableau dans la représentation interne.

arrayappend(x)
Ajoute un nouvel élément avec la valeur x à la fin du tableau.

arraybuffer_info()
Retourne un tuple (adresse, longueur) qui donne l'adresse mémoire courante et la longueur en octets du tampon utilisé pour conserver le contenu du tableau. Ceci peut s'avérer utile quand on travaille avec des interfaces d'entrée-sortie de bas niveau (intrinsèquement peu sûres) qui nécessitent des adresses mémoire, telles que certaines opérations ioctl(). Les nombres retournés sont valides tant que le tableau existe et qu'aucune opération ayant pour effet de changer la longueur ne lui est appliquée

arraybyteswap()
Inverse l'ordre des octets pour tous les éléments du tableau. Cette méthode n'est appliquable qu'aux valeurs de taille 1, 2, 4 ou 8 octets; pour les autres types de valeurs, RuntimeError est déclenchée. Elle est utile quand on lit des données depuis un fichier écrit sur une machine dont l'ordre d'octets est différent.

arraycount(x)
Retourne le nombre d'occurrences de x dans le tableau.

arrayextend(a)
Ajoute les éléments de tableau contenus dans a à la fin du tableau.

arrayfromfile(f, n)
Lit n éléments (valeurs machine) depuis l'objet fichier f et les ajoute à la fin du tableau. Si moins de n éléments sont disponibles, EOFError est déclenchée, mais les éléments qui étaient disponibles sont toutefois insérés dans le tableau. f doit être un objet du type intégré fichier; avec quelque chose d'autre une méthode read() ne donnera rien.

arrayfromlist(liste)
Ajoute des éléments depuis la liste. Ceci équivaut à "for x in liste: a.append(x)" sauf que s'il y a une erreur de type, le tableau reste inchangé.

arrayfromstring(s)
Ajoute des éléments depuis la chaîne de caractères, en interprétant la chaîne de caractères comme un tableau de valeurs machine (c'est-à-dire comme si elles avaient été lues depuis un fichier avec la méthode fromfile()).

arrayindex(x)
Retourne la plus petite valeur i telle que i est l'index de la première occurrence de x dans le tableau.

arrayinsert(i, x)
Insère un nouvel élément avec la valeur x dans le tableau avant la position i.

arraypop([i])
Enlève l'élément d'index i du tableau et le retourne. La valeur par défaut de l'argument optionnel est -1, de façon que par défaut c'est le dernier élément qui est enlevé et retourné.

arrayread(f, n)

Déconseillé depuis la version 1.5.1  Utiliser la méthode fromfile(). Lit n éléments (valeurs machine) depuis l'objet fichier f et les ajoute à la fin du tableau. Si moins de n éléments sont disponibles, EOFError est déclenchée, mais les éléments qui étaient disponibles sont toutefois insérés dans le tableau. f doit être un objet du type intégré fichier; avec quelque chose d'autre une méthode read() ne donnera rien.

arrayremove(x)
Enlève la première occurrence de x du tableau.

arrayreverse()
Inverse l'ordre des éléments dans le tableau.

arraytofile(f)
Ecrit tous les éléments (valeurs machine) dans l'objet fichier f.

arraytolist()
Convertit le tableau en une liste ordinaire avec les mêmes éléments.

arraytostring()
Convertit le tableau en un tableau de valeurs machine et retourne la représentation sous forme de chaîne de caractères (la même séquence d'octets qui serait écrite dans un fichier avec la méthode tofile().)

arraywrite(f)

Déconseillé depuis la version 1.5.1  Utiliser la méthode tofile(). Ecrit tous les éléments (valeurs machine) dans l'objet fichier f.

Quand un objet tableau est imprimé ou converti en chaîne de caractères, il est représenté comme array(codetype, initialiseur). La variable initialiseur est omise si le tableau est vide, sinon c'est une chaîne de caractères si le codetype est 'c', sinon c'est une liste de nombres. La chaîne de caractères pourra être de nouveau convertie en un tableau du même type et avec les mêmes valeurs en utilisant des guillemets inversés (``), dans la mesure où la fonction array() a été importée en utilisant "from array import array". Exemples:

array('l')
array('c', 'hello world')
array('l', [1, 2, 3, 4, 5])
array('d', [1.0, 2.0, 3.14])

Voir aussi:

Module struct:
compactage et décompactage de données binaires hétérogènes
Module xdrlib:
compactage et décompactage de données XDR
L'extension Numeric Python (NumPy) définit un autre type tableau; voir The Numerical Python Manual pour des informations complémentaires (disponible en ligne à ftp://ftp-icf.llnl.gov/pub/python/numericalpython.pdf). Pour plus d'informations au sujet de NumPy, voir http://www.python.org/topics/scicomp/numpy.html.