T1.b copier des listes : ATTENTION


Copier une liste


Cette section est particulièrement importante et doit être bien comprise

Exemple : Copier une liste ? ATTENTION !

Vous voyez que la modification de x modifie y aussi ! 
Dans python tutor ( cliquer sur visualiser pour acceder à python tutor) vous pouvez voir que x=y n'a pas dupliqué la liste.

Techniquement, Python utilise des pointeurs (comme dans le langage de programmation C) vers les mêmes objets. Python Tutor l'illustre avec des flèches qui partent des variables x et y et qui pointent vers la même liste. Donc, si on modifie la liste x, la liste y est modifiée de la même manière. Rappelez-vous de ceci dans vos futurs programmes car cela pourrait avoir des effets désastreux !

Pour éviter ce problème, il va falloir créer une copie explicite de la liste initiale. Observez cet exemple :

Exemple : Copier une liste ? ATTENTION !

Si on regarde à nouveau dans Python Tutor (Figure 12), on voit clairement que l'utilisation d'une tranche [:] ou de la fonction list() crée des copies explicites. Chaque flèche pointe vers une liste différente, indépendante des autres

Attention, les deux techniques précédentes ne fonctionnent que pour les listes à une dimension, autrement dit les listes qui ne contiennent pas elles-mêmes d'autres listes.

Exemple : Copier une liste ? ATTENTION !
Exemple : Avec deepcopy