Chapitre 7 : Les tableaux et les tuples⚓︎
Les types de données dits « simples » (int, float, bool, et str) ne sont plus suffisants si un programme a besoin de garder en mémoire un grand nombre de valeurs. Il faut donc créer de nouveaux types de données capables de contenir un ensemble de valeurs : ces nouveaux types de variables sont des conteneurs capables de contenir plusieurs variables.
I. Les Tableaux⚓︎
A savoir
1. Définition⚓︎
En informatique, un tableau est une structure de données linéaire qui contient une collection d'éléments rangés dans un ordre précis : on parle de tableau indexé ou de séquence.
L'indexation est la numérotation de la place de chaque élément dans le tableau. Elle permet d'accéder à chaque élément du tableau en utilisant un indice (ou index). L'indexation commence à 0 : l'indice des éléments est compris entre 0 et nombre d'éléments-1.
Voici un exemple de tableau indexé :
Index ou indice | 0 | 1 | 2 | 3 | 4 |
---|---|---|---|---|---|
Éléments | "pommes" | "bananes" | "lait" | "pain" | "œufs" |
Dans cet exemple :
- Le premier élément de la liste de courses se trouve à l'indice 0.
- Le troisième élément de la liste de courses se trouve à l'indice 2.
En Python, les tableaux sont représentés par le type list
.
2. Création d'une variable de type list
⚓︎
Une variable de type list
est définie à l'aide de crochets.
tab_1 = []
Les élements de la liste sont séparés par des virgules.
tab_2 = [1, 36, 4, 78, 9, 6, 3, 4, 14]
tab_3 = ["pommes", "bananes", "lait", "pain", "œufs"]
On utilise la notation avec l'indice entre crochets.
fruits = ["pommes", "bananes", "lait", "pain", "œufs"]
print(fruits[0])
element = fruits[3]
print(element)
>>> "pommes"
>>> "pain"
La longueur d'une liste est aussi le nombre d'éléments qu'elle contient.
fruits = ["pommes", "bananes", "lait", "pain", "œufs"]
print(len(fruits))
>>> 5
3. Modification d'une variable de type list
⚓︎
Une liste est un objet mutable : on peut modifier ses éléments, en ajouter ou en supprimer.
on peut ajouter un élément en fin de liste avec la fonction append
fruits = ["pommes", "poire", "banane", "orange"]
fruits.append("melon")
print(fruits)
>>> ["pommes", "poire", "banane", "orange", "melon"]
On peut insérer un élement à un indice donné avec la fonction insert
fruits = ["pomme", "poire", "banane", "orange"]
fruits.insert(2, "ananas")
print(fruits)
>>> ["pomme", "poire", "ananas", "banane", "orange"]
On peut modifier un élément grâce à son indice.
fruits = ["pomme", "poire", "banane", "orange"]
fruits[2] = "prune"
print(fruits)
>>> ["pommes", "poire", "prune", "orange"]
On peut tester la présence d'un élément dans une liste avec le mot clef in
fruits = ["pomme", "poire", "banane", "orange"]
est_present = "pomme" in fruits
print(est_present)
>>> True # Car la chaine de caractère "pommes" est bien présente dans fruits
On peut supprimer un élément grâce à son indice avec la fonction del
fruits = ["pomme", "poire", "banane", "orange"]
del fruits[1]
print(fruits)
>>> ["poire", "banane", "orange"]
4. Parcours d'une variable de type list
⚓︎
Une liste est aussi un objet itérable : cela signifie que l'on peut parcourir une liste à l'aide d'une itération/boucle for.
On peut parcourir une liste en itérant sur les indices en utilisant une boucle for
et l'instruciton range
.
fruits = ["pomme", "poire", "banane", "orange"]
for i in range(0, len(fruits)):
print(fruits[i])
>>> "pomme"
>>> "poire"
>>> "banane"
>>> "orange"
On peut parcourir une liste en itérant sur ses éléments en utilisant une boucle for
.
fruits = ["pomme", "poire", "banane", "orange"]
for element in fruits:
print(element)
>>> "pomme"
>>> "poire"
>>> "banane"
>>> "orange"
A savoir
5. Algorithmes à connaître sur les tableaux⚓︎
Somme et moyenne des éléments
def somme(tab):
total = 0
for element in tab:
total += element
return total
def moyenne(tab):
total = 0
for element in tab:
total += element
return total / len(tab)
Recherche d'un élément
def element_max(tab):
maximum = tab[0]
for element in tab:
if element > maximum:
maximum = element
return maximum
def element_min(tab):
minimum = tab[0]
for element in tab:
if element < minimum
minimum = element
return minimum
def rechercher(tab, valeur):
for element in tab:
if element == valeur:
return True
return False
A savoir
6. Les compréhensions de listes⚓︎
Pour créer une liste des carrés des nombres de 1 à 100, on peut écrire l’instruction suivante :
carres = [1, 4, 9, 16, 25, 36, 49, 64, 81, 100, ...]
Pour automatiser la création de cette liste, nous pouvons utiliser une boucle for.
carres = []
for i in range(1, 101):
carres[i].append(i**2)
Cette méthode est plus efficace et réduit les erreurs potentielles.
Les compréhensions de liste offrent une manière encore plus concise et lisible de créer des listes. Voici comment nous pouvons réécrire l'exemple précédent en utilisant une compréhension de liste.
carres = [i**2 for i in range(1, 101)]
A savoir
7. Les tableaux de tableaux⚓︎
Un tableau peut aussi contenir des tableaux : chaque élément d'un tableau est alors aussi un tableau. On parle alors de tableaux de tableaux ou de tableau « deux dimensions » (2D).
Dans un tableau à deux dimensions, chaque élément est repéré par deux indices (numéro de ligne et numéro de colonne) permettant d'indiquer sa position.
Voici un exemple de tableau de tableau (ou tableau à deux dimensions) :
tab = [[12, 2, 10], [5, 9, 8], [4, 8, 1], [15, 13, 11]]
On peut accéder aux éléments du tableau tab grâce à leur index :
element_1 = tab[1]
print(element_1)
>>> [5, 9, 8]
On peut représenter ce même tableau de tableaux de la façon suivante :
Pour accéder à un élément particulier du tableau de tableaux, on utilise la notation avec « doubles crochets » : tab[i][j]
ou i est l'indice de la ligne et j l'indice de la colonne.
Par exemple, pour accéder au 3ème élément du 2ème élément du tableau on utilise l’instruction :
element_1_3 = tab[1][2]
print(element_1_3)
>>> 8
II. Les n-uplets (ou tuples)⚓︎
A savoir
1. Définition et propriétés⚓︎
En informatique, un p-uplet (ou n-uplet) est une séquence
- contenant p éléments : doublet (2 éléments) , triplet (3 éléments), quadruplet (4 éléments) ….
- indexée : chaque élément un indice qui correspond à sa place dans le p-uplet (attention l'indexation commence toujours à 0)
- non mutabl : on ne peut pas modifier les éléments d'un p-uplet à la différence des tableaux.
En Python, les p-uplets sont implémentés par le type tuple qui est une séquence non mutable de p éléments indexés.
Les instructions permettant de manipuler les tuples en Python sont disponibles ci-dessous :
On crée un tuple en utilisant des parenthèses.
tuple_vide = ()
Pour créer un tuple contenant des éléments, on les écrit entre parenthèses et séparés par des virgules.
tup_nb = (1, 23, 4, 12, 15)
On utilise la notation avec l'indice entre crochets.
tup_nb = (1, 23, 4, 12, 15)
print(tup_nb[2])
print(tup_nb[3])
>>> 4
>>> 12
On utilise l'instruction len
: la longueur d'un tuple est aussi le nombre de ses éléments.
print(len(tup_nb))
>>> 5
On parcourt un tuple comme un tableau grâce à une boucle for comme vu précédemment.
2. Utilisation des tuples⚓︎
On ne travaille pas souvent directement sur des tuples car c'est une structure que l'on ne peut pas modifier. Cependant, un objet de type tuple peut servir dans certains cas précis :
-
Il sert souvent à représenter des tableaux mais dont le contenu est invariable.
-
Il permet les affectations multiples comme dans les exemples ci-dessous : Le code est équivalent et utilise des tuples "cachés".
a, b = 3, 4
(a, b) = (3, 4)
print(a, b)
- Il permet également de renvoyer plusieurs valeurs lors d'un appel d'une fonction comme dans l'exemple suivant qui utilise également des tuples "cachés".
# Définition des fonctions
def mult_par_2(a, b):
return a * 2, b * 2
# Programme principal
# On récupère les retours multiples dans un tuple
x, y = mult_par_2(8, 10)