Adloun

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 donc superficielle[0][0].
  • L'opération originale.append([7, 8]) n'affecte pas la copie superficielle car seule la liste principale de originale a 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

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →