Les objet de type list
sont muables☘
Convention
En Python, les éléments de type list
sont ce qui s'approche le plus de
la notion abstraite de « tableau ».
Dans la suite du cours, on utilisera le mot « liste Python »
pour désigner les deux, c'est-à-dire les objets de type list
ainsi que
le type abstrait de données « tableau ».
Contrairement aux chaînes de caractères (et aux tuples - nous le verrons plus
tard), les listes Python sont muables. Cela signifie que l'on peut changer
un élément du tableau sans changer l'objet de type list
.
Pour constater que le tableau (le conteneur) n'est pas modifié même lorsque
le contenu est modifié, on peut à nouveau utiliser la fonction id()
qui renvoie
l'identifiant d'un objet python (sur votre machine, le numéro d'identifiant
sera différent de celui de cet exemple mais les valeurs renvoyées par les appels
id(tab)
doivent être les mêmes) :
1 2 3 4 5 6 7 8 9 10 11 12 |
|
On constate que l'objet de type list
reste le même après avoir modifié la valeur
de l'un de ses éléments (son contenu a bien sûr changé). On peut interprêter la
ligne 1 par le schéma suivant :
En ligne 6, lorsqu'on modifie la valeur de l'élément d'indice 1, aucun nouvel objet n'est créé : c'est vraiment l'objet initial qui est modifié :
Vous pouvez aussi visualiser ce comportement sur le site Python tutor.
Interprétation
On peut voir l'objet conteneur (tableau, chaîne, tuple) comme une bouteille :
- Si la bouteille est une chaîne (ou un tuple), on voit ce qu'il y a dans la bouteille mais elle est bien scellée et il est impossible d'en modifier son contenu. Pour avoir un autre contenu, on doit remplir une autre bouteille.
- Si la bouteille est un tableau (type
list
), on peut voir ce qu'il y a dans la bouteille et la bouteille reste ouverte : on peut modifier une partie de son contenu, ou ajouter du contenu ou encore enlever du contenu.