Copier en profondeur une liste en Python

Samyak Jain 30 janvier 2023
  1. Utilisez la fonction copy.deepcopy() pour copier en profondeur une liste en Python
  2. Utiliser la compréhension de liste pour copier en profondeur une liste en Python
Copier en profondeur une liste en Python

Nous pouvons créer des copies superficielles et profondes en Python. Une copie profonde d’une liste consiste à créer une nouvelle liste puis à y insérer récursivement les copies des éléments de la liste d’origine. Il fait référence au clonage d’une liste et les modifications apportées à la liste d’origine n’affectent pas la liste clonée.

Utilisez la fonction copy.deepcopy() pour copier en profondeur une liste en Python

La fonction deepcopy() du module copy permet de créer une copie profonde de la liste spécifiée. Si nous modifions cette copie, le contenu de la liste d’origine reste le même et n’est pas modifié.

Par exemple,

import copy

A = [[10, 60], [50, "Hi"], ["Hello", 5, 80]]
B = copy.deepcopy(A)
A[2][0] = "World"
A[0][1] = 10
print("List A is : % s" % (A))
print("List B is : % s" % (B))

Production:

List A is : [[10, 10], [50, 'Hi'], ['World', 5, 80]]
List B is : [[10, 60], [50, 'Hi'], ['Hello', 5, 80]]

La liste B n’est pas modifiée après l’attribution d’une nouvelle valeur dans la liste A car la liste B est une copie complète de la liste A. La liste A et la liste B sont indépendantes l’une de l’autre.

Utiliser la compréhension de liste pour copier en profondeur une liste en Python

La compréhension de liste en Python est utilisée pour créer de nouvelles listes à partir d’autres itérables comme des listes, des tuples, des chaînes, etc. La compréhension de liste rend le code simple et efficace.

Nous allons essentiellement faire ce que fait la fonction deepcopy() et créer récursivement une nouvelle copie de la liste donnée dans cette méthode.

Par exemple,

A = [2, 4, 6, 8, 10]
B = [i for i in A]
A[0] = "Hi"
print("List A is : % s" % (A))
print("List B is : % s" % (B))

Production:

List A is : ['Hi', 4, 6, 8, 10]
List B is : [2, 4, 6, 8, 10]

Nous pouvons également effectuer cette méthode sans compréhension de liste et utiliser la boucle for de manière traditionnelle. Cependant, cela prend plus de lignes de code et plus de temps.

Article connexe - Python List