Maison >développement back-end >Tutoriel Python >Comment copier correctement une liste en profondeur en Python ?

Comment copier correctement une liste en profondeur en Python ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-04 02:55:38659parcourir

How to Properly Deep Copy a List in Python?

Comment copier en profondeur une liste ?

Lorsque vous essayez de créer une copie complète d'une liste, il est crucial d'éviter d'utiliser la liste ( ) constructeur. Bien que list() puisse sembler générer une liste distincte, elle n'effectue qu'une copie superficielle, préservant les références aux éléments de la liste d'origine. Par conséquent, toute modification apportée à la nouvelle liste affectera également l'original.

Solution : copie approfondie à l'aide de copy.deepcopy()

Pour une véritable copie approfondie, la copie La fonction .deepcopy() doit être utilisée. Cette fonction clone de manière récursive tous les éléments de la liste, garantissant que la nouvelle liste est indépendante de l'originale.

Exemple :

import copy

# Original list
E0 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

# Shallow copy
E0_copy1 = list(E0)

# Deep copy
E0_copy2 = copy.deepcopy(E0)

# Modify shallow copy
E0_copy1[0][0] = 0

# Observe that changes to the shallow copy also affect the original
print(E0)  # Output: [[0, 2, 3], [4, 5, 6], [7, 8, 9]]

# Modify deep copy
E0_copy2[1][1] = 0

# Note that changes to the deep copy do not affect the original
print(E0)  # Output: [[0, 2, 3], [4, 5, 6], [7, 8, 9]]

Explication :

list() initialise une nouvelle liste en référençant les éléments d'origine. Par conséquent, toute modification apportée à la copie se propage à la liste d'origine.

copy.deepcopy(), en revanche, crée des copies de tous les éléments imbriqués dans la liste, ce qui donne une copie totalement indépendante. Les modifications apportées à la copie complète n'ont pas d'impact sur la liste originale.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn