Python (école d'ingénieur) · Chapitre 5 · Exercice
Copie superficielle vs profonde
Listes, tuples et dictionnaires
Énoncé
Expliquer la différence entre une copie superficielle et une copie profonde en illustrant avec une liste imbriquée.
Corrigé
Étudions le comportement sur une liste 2D :
from copy import deepcopy
originale = [[1, 2], [3, 4], [5, 6]]
superficielle = originale.copy()
profonde = deepcopy(originale)
# Modification de l'originale
originale[0][0] = 99
originale.append([7, 8])
print("Originale :", originale)
print("Superficielle :", superficielle)
print("Profonde :", profonde)
Résultat de l'affichage :
Originale : [[99, 2], [3, 4], [5, 6], [7, 8]]
Superficielle : [[99, 2], [3, 4], [5, 6]]
Profonde : [[1, 2], [3, 4], [5, 6]]
Explication :
- La copie superficielle ne duplique que la liste externe ; les listes imbriquées sont partagées par référence. Modifier
originale[0][0]affecte doncsuperficielle[0][0].
- L'opération
originale.append([7, 8])n'affecte pas la copie superficielle car seule la liste principale deoriginalea grandi.
- La copie profonde duplique récursivement tous les niveaux de structures : aucune interférence n'est possible.
100 % gratuit
La suite du chapitre est sur Adloun
- 7 autres exercices corrigés dans ce chapitre, et 7 à chercher avec le tuteur
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.