Livre_silo 30 août 2013 16:32 Page 167
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
167
6 – Notions de complexité et algorithmique sur les tableaux
Le programme principal construit un tableau a et le passe à la fonction f :
a = [0, 1, 2, 3]
f(a)
Il est important de comprendre que, pendant l’exécution de la fonction f, la variable locale b
est un alias pour le tableau a (voir page 152). Ainsi, à l’entrée de la fonction f, on a :
figures/alias1.pdf
Après l’exécution de l’instruction b[2] = 42, on a :
figures/alias2.pdf
En particulier, après l’appel à la fonction f, on a a[2] == 42.
Il est parfois utile d’écrire des fonctions qui modifient le contenu d’un tableau reçu en
argument. Un exemple typique est celui d’une fonction qui échange le contenu de deux
cases d’un tableau :
def echange(a, i, j):
tmp = a[i]
a[i] = a[j]
a[j] = tmp
Elle peut aussi s’écrire plus simplement par affectation multiple :
def echange(a, i, j):
a[i], a[j] = a[j], a[i]
Un autre cas est celui d’une fonction qui trie un tableau ; plusieurs exemples seront donnés
dans le chapitre 13.
ATTENTION Les tableaux Python
Python propose plusieurs structures de tableaux, chacune prévue pour un usage spécifique.
Dans ce chapitre, on a utilisé les « listes », dont on verra au chapitre 12 qu’elles sont en fait
un peu plus que de simples tableaux.
Il existe également une bibliothèque appelée array qui, comme son nom l’indique, correspond effectivement à une structure de tableaux. Cependant, il s’agit uniquement d’une
représentation plus compacte pour des tableaux très spécifiques, dont les éléments sont
tous d’un même type numérique simple (caractère, entier ou flottant). En particulier, on
ne pourrait pas utiliser la bibliothèque array pour représenter des matrices.
Enfin, la bibliothèque numpy propose aussi un type ndarray qui sert à représenter des tableaux de dimension arbitraire dont tous les éléments sont d’un même type, principalement
utilisés pour le calcul matriciel. Attention à ne pas confondre ce type avec le précédent,
même si ses valeurs s’affichent parfois aussi sous la forme array(...).
Précédent

- 180/402

Suivant