Livre_silo 30 août 2013 16:32 Page 152
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
152
Informatique pour tous
On peut également extraire tous les éléments situés entre les indices i (inclus) et j (exclu)
d’un tableau t avec la notation t[i:j]. Ainsi, l’instruction suivante :
In [8]: b = a[2:4]
affecte à la variable b un nouveau tableau de longueur 2 et de contenu [42, 1]. De manière
générale, la notation t[i:j] construit un nouveau tableau de longueur j − i. Cette opération n’ est pas instantanée, puisqu’elle revient à faire j − i affectations. Il est important
de comprendre que les cases mémoire de a ont été copiées. En particulier, aucune modification des cases de b ne modifiera le contenu de a (et réciproquement). Ainsi, la séquence
d’instructions suivante affiche toujours [3, 0, 42, 1, 4, 8, 12].
b[0] = 5
print(a)
En particulier, on peut obtenir une copie du tableau a avec a[0:7], et plus généralement avec
a[0:len(a)]. Il existe même un raccourci pour cela, à savoir a[:].
ATTENTION Deux noms pour un même tableau
Si on écrit les deux instructions suivantes :
a = [0, 1, 2, 3]
b = a
alors le tableau b n’est pas une copie de a. En effet, les deux variables a et b désignent toutes
les deux le même tableau. On dit alors que b et a sont des alias.
figures/alias1.pdf
On peut s’en convaincre en modifiant un élément de a et en vérifiant que la modification
s’observe également dans b. Si par exemple on exécute b[2] = 42, alors on obtient :
figures/alias2.pdf
Cependant, a et b ne sont pas liés à jamais. Si on affecte à a un nouveau tableau, par exemple
avec a = [4, 5], alors on obtient la situation suivante :
figures/alias3.pdf
où b désigne toujours le même tableau qu’auparavant.
POUR ALLER PLUS LOIN Les tableaux hétérogènes
En Python, les tableaux sont hétérogènes, c’est-à-dire que les valeurs de leurs composantes
peuvent être de types différents, par exemple [1, 'A', True]. Dans cet ouvrage, on utilisera
toujours des tableaux homogènes.
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
152
Informatique pour tous
On peut également extraire tous les éléments situés entre les indices i (inclus) et j (exclu)
d’un tableau t avec la notation t[i:j]. Ainsi, l’instruction suivante :
In [8]: b = a[2:4]
affecte à la variable b un nouveau tableau de longueur 2 et de contenu [42, 1]. De manière
générale, la notation t[i:j] construit un nouveau tableau de longueur j − i. Cette opération n’ est pas instantanée, puisqu’elle revient à faire j − i affectations. Il est important
de comprendre que les cases mémoire de a ont été copiées. En particulier, aucune modification des cases de b ne modifiera le contenu de a (et réciproquement). Ainsi, la séquence
d’instructions suivante affiche toujours [3, 0, 42, 1, 4, 8, 12].
b[0] = 5
print(a)
En particulier, on peut obtenir une copie du tableau a avec a[0:7], et plus généralement avec
a[0:len(a)]. Il existe même un raccourci pour cela, à savoir a[:].
ATTENTION Deux noms pour un même tableau
Si on écrit les deux instructions suivantes :
a = [0, 1, 2, 3]
b = a
alors le tableau b n’est pas une copie de a. En effet, les deux variables a et b désignent toutes
les deux le même tableau. On dit alors que b et a sont des alias.
figures/alias1.pdf
On peut s’en convaincre en modifiant un élément de a et en vérifiant que la modification
s’observe également dans b. Si par exemple on exécute b[2] = 42, alors on obtient :
figures/alias2.pdf
Cependant, a et b ne sont pas liés à jamais. Si on affecte à a un nouveau tableau, par exemple
avec a = [4, 5], alors on obtient la situation suivante :
figures/alias3.pdf
où b désigne toujours le même tableau qu’auparavant.
POUR ALLER PLUS LOIN Les tableaux hétérogènes
En Python, les tableaux sont hétérogènes, c’est-à-dire que les valeurs de leurs composantes
peuvent être de types différents, par exemple [1, 'A', True]. Dans cet ouvrage, on utilisera
toujours des tableaux homogènes.
