Aller au contenu

Copier des listes

Les listes Python sont une structure de données polyvalente qui vous permet de stocker un ensemble d'éléments. En Python, les listes sont mutables, ce qui signifie que vous pouvez modifier le contenu d'une liste après sa création. Cependant, il arrive que vous souhaitiez créer une copie d'une liste sans modifier la liste d'origine. C'est là qu'intervient la copie de liste en Python.

Copie de listes Python

En Python, vous pouvez créer une copie d'une liste en utilisant la méthode copy() ou l'opérateur de tranchage [:]. La méthode copy() crée une copie superficielle (shallow copy) de la liste, ce qui signifie qu'elle crée un nouvel objet liste mais copie les références des éléments de la liste d'origine vers la nouvelle liste. L'opérateur de tranchage [:] crée également une copie superficielle de la liste. Cependant, si la liste contient des objets mutables tels que d'autres listes ou des dictionnaires, les éléments de la nouvelle liste feront référence aux mêmes objets que ceux de la liste d'origine.


Copie superficielle vs. Copie profonde

Il est essentiel de comprendre la différence entre une copie superficielle et une copie profonde lors de l'utilisation des listes Python. Une copie superficielle crée uniquement un nouvel objet liste avec des références vers les éléments de la liste d'origine. En revanche, une copie profonde crée un nouvel objet liste complètement indépendant avec de nouvelles copies des éléments de la liste d'origine.

Pour créer une copie profonde d'une liste, vous pouvez utiliser la méthode copy.deepcopy() du module intégré copy. Cette méthode copie récursivement tous les objets de la liste, garantissant que la nouvelle liste est entièrement indépendante de la liste d'origine.


Exemples

Examinons quelques exemples pour illustrer les concepts de copie de liste et de copie profonde en Python.

Copie superficielle vs copie profonde en Python

python
# Shallow copy example
original_list = [[1, 2], [3, 4]]
shallow_copy = original_list.copy()

# Modify the original list
original_list[0][0] = 0

# The shallow copy reflects the changes made to the original list
print(shallow_copy)  # Output: [[0, 2], [3, 4]]


# Deep copy example
import copy

original_list = [[1, 2], [3, 4]]
deep_copy = copy.deepcopy(original_list)

# Modify the original list
original_list[0][0] = 0

# The deep copy does not reflect the changes made to the original list
print(deep_copy)  # Output: [[1, 2], [3, 4]]

Conclusion

Les listes Python sont une structure de données puissante qui peut être utilisée pour stocker et manipuler des collections de données. Lors de l'utilisation de listes, il est essentiel de comprendre comment créer des copies de listes sans modifier la liste d'origine. Dans cet article, nous avons couvert les concepts de copie superficielle, de copie profonde et les méthodes de copie de listes Python. En comprenant ces concepts, vous pouvez écrire un code Python plus performant, plus facile à maintenir et à déboguer.

Pratique

En Python, quelle(s) opération(s) peut-on utiliser pour copier une liste ?

Trouvez-vous cela utile?

Aperçu dual-run — comparez avec les routes Symfony en production.