xxxxxxxxxx
# Tableaux
**Les tableaux permettent de mémoriser des données en les indexant à partir de 0. On les définit en utilisant des crochets `[` et `]`.**
Les tableaux permettent de mémoriser des données en les indexant à partir de 0. On les définit en utilisant des crochets [
et ]
.
xxxxxxxxxx
On peut alors :
#### créer un tableau contenant `n` fois la même valeur
On peut alors :
n
fois la même valeur¶xxxxxxxxxx
tab = [7] * 20
tab
xxxxxxxxxx
#### définir un tableau contenant des données (ici cinq notes sur 20) :
xxxxxxxxxx
notes = [12, 16, 15, 19, 17]
notes
xxxxxxxxxx
#### lire une donnée à partir de son indice (l'indexation commence à zéro):
xxxxxxxxxx
notes[0]
xxxxxxxxxx
notes[1]
xxxxxxxxxx
notes[4]
xxxxxxxxxx
Il est important de savoir qu'on peut numéroter «en partant de la fin». Le dernier élément du tableau correspond ainsi à l'indice -1, l'avant dernier élément à l'indice - 2 etc...
Il est important de savoir qu'on peut numéroter «en partant de la fin». Le dernier élément du tableau correspond ainsi à l'indice -1, l'avant dernier élément à l'indice - 2 etc...
xxxxxxxxxx
notes[-1]
xxxxxxxxxx
notes[-2]
xxxxxxxxxx
notes[-3]
xxxxxxxxxx
#### obtenir la taille (ou longueur) du tableau :
xxxxxxxxxx
len(notes)
xxxxxxxxxx
On peut alors - au choix - accéder à la dernière valeur du tableau :
- soit avec l'indice `len(notes) - 1`
- soit avec l'indice `-1` comme indiqué plus haut
On peut alors - au choix - accéder à la dernière valeur du tableau :
len(notes) - 1
-1
comme indiqué plus hautxxxxxxxxxx
notes[len(notes) - 1]
xxxxxxxxxx
notes[4] = 20
notes
xxxxxxxxxx
notes[0], notes[-1] = notes[-1], notes[0] # on intervertit les premier et dernier éléments
notes
xxxxxxxxxx
moyennes = []
moyennes
xxxxxxxxxx
moyennes.append(13.3)
moyennes.append(16.25)
moyennes.append(9.80)
moyennes
xxxxxxxxxx
tab_1 = [7, 77, 777]
tab_2 = [7777, 77777, 777777]
tab_3 = tab_1 + tab_2
tab_3
xxxxxxxxxx
*Remarque :* Cette opération est coûteuse (elle nécessite la recopie des valeurs de `tab_1` et `tab_2`).
Utiliser cette méthode à la place de `append` est donc souvent une assez mauvaise idée !
Remarque : Cette opération est coûteuse (elle nécessite la recopie des valeurs de tab_1
et tab_2
).
Utiliser cette méthode à la place de append
est donc souvent une assez mauvaise idée !
xxxxxxxxxx
#### remarque : les tableaux sont de type `list`
list
¶xxxxxxxxxx
type(moyennes)
xxxxxxxxxx
**Les p-uplets permettent également de mémoriser des données mais - contrairement aux tableaux - une fois définis ils ne sont pas modifiables. Les p-uplets utilisent les parethèses `(` et `)` pour être définis (mais utilisent les crochets pour la lecture des données).**
Enfin on parle de :
- 2-uplet pour un couple de deux données,
- 3-uplet pour un triplet de trois données,
- 4-uplet pour quatre données etc.
Compte-tenu de leur immutabilité (le fait qu'on ne peut pas les modifier) seules les opérations de définition et de lecture sont possibles :
Les p-uplets permettent également de mémoriser des données mais - contrairement aux tableaux - une fois définis ils ne sont pas modifiables. Les p-uplets utilisent les parethèses (
et )
pour être définis (mais utilisent les crochets pour la lecture des données).
Enfin on parle de :
Compte-tenu de leur immutabilité (le fait qu'on ne peut pas les modifier) seules les opérations de définition et de lecture sont possibles :
xxxxxxxxxx
coord_3d = (6.6, 9.9, 0.5)
coord_3d
xxxxxxxxxx
#### lire une donnée à partir de son indice (l'indexation commence à zéro)
xxxxxxxxxx
coord_3d[0]
xxxxxxxxxx
coord_3d[1]
xxxxxxxxxx
coord_3d[2]
xxxxxxxxxx
On peut aussi numéroter «en partant de la fin». Le dernier élément du tableau correspond ainsi à l'indice -1, l'avant dernier élément à l'indice - 2 etc...
On peut aussi numéroter «en partant de la fin». Le dernier élément du tableau correspond ainsi à l'indice -1, l'avant dernier élément à l'indice - 2 etc...
xxxxxxxxxx
coord_3d[-1]
xxxxxxxxxx
coord_3d[-2]
xxxxxxxxxx
#### obtenir la taille (ou longueur) du p-uplet :
xxxxxxxxxx
len(coord_3d)
xxxxxxxxxx
#### des choses qui ne fonctionnent pas (car les p-uplets sont immutables)
xxxxxxxxxx
coord_3d[2] = 0.6
xxxxxxxxxx
coord_3d.append(999)
xxxxxxxxxx
#### remarque : les p-uplets sont de type `tuple`
tuple
¶xxxxxxxxxx
type(coord_3d)
xxxxxxxxxx
# Remarque : on connaissait déjà les p-uplets sans le savoir
xxxxxxxxxx
#### Lorsqu'on utilise une affectation multiple :
xxxxxxxxxx
jour, mois, annee = 14, 'juillet', 1789
mois
xxxxxxxxxx
On utilise en fait un 3-uplet. L'instruction ci-dessus est équivalente à :
On utilise en fait un 3-uplet. L'instruction ci-dessus est équivalente à :
xxxxxxxxxx
jour, mois, annee = (14, 'juillet', 1789)
mois
xxxxxxxxxx
#### Lorsqu'on utilise une fonction qui renvoie plusieurs valeurs :
xxxxxxxxxx
def somme_et_produit(a, b):
somme = a + b
produit = a * b
return somme, produit
xxxxxxxxxx
somme_et_produit(5, 3)
xxxxxxxxxx
On voit que la fonction renvoie ici un 2-uplet mais qu'on peut récupérer les deux valeurs séparément :
On voit que la fonction renvoie ici un 2-uplet mais qu'on peut récupérer les deux valeurs séparément :
xxxxxxxxxx
s, p = somme_et_produit(5, 3)
s
xxxxxxxxxx
p
xxxxxxxxxx
a, b = 7, 1000
print(a)
a, b = b, a
print(a)
xxxxxxxxxx
Ici on a utilisé des 2-uplets sans les écrire explicitement : pour l'affectation multiple (ligne 1) et pour l'interversion des deux valeurs (ligne 3).
Ici on a utilisé des 2-uplets sans les écrire explicitement : pour l'affectation multiple (ligne 1) et pour l'interversion des deux valeurs (ligne 3).