Maison  >  Article  >  développement back-end  >  Comment copier des objets en Python ?

Comment copier des objets en Python ?

WBOY
WBOYavant
2023-08-25 20:33:151407parcourir

Comment copier des objets en Python ?

En Python, si vous souhaitez copier un objet, l'opérateur d'affectation ne servira à rien. Il crée une liaison entre la cible et l'objet, c'est-à-dire qu'il ne crée jamais de nouvel objet. Il crée simplement une nouvelle variable qui partage la référence d'objet d'origine. Pour résoudre ce problème, le module de réplication est fourni. Ce module comporte des opérations communes de copie superficielle et de copie profonde.

Copie superficielle

La copie superficielle construit un nouvel objet composite puis insère la référence dans l'objet d'origine. Il copie des objets en utilisant

copy.copy(x)
Return a shallow copy of x.

Copie approfondie

La copie profonde construit un nouvel objet composite, puis y insère de manière récursive des copies des objets de l'objet d'origine. Il copie les objets en utilisant les méthodes suivantes

copy.deepcopy(x[, memo])

Return a deep copy of x. Here, memo is a dictionary of objects already copied during the current copying pass;

Les problèmes suivants peuvent survenir lors de l'utilisation des opérations de copie complète -

  • La récursion peut conduire à des boucles récursives.

  • Étant donné que la copie profonde copie tout, il est possible d'en copier trop, comme les données que vous souhaitez partager entre les répliques.

Cependant, la méthode deepcopy() évite ces problèmes. Voyons comment −

  • Conserve un dictionnaire mémo des objets copiés pendant le processus de copie en cours

  • Autoriser les classes définies par l'utilisateur à remplacer les opérations de copie ou les ensembles de composants copiés.

Installez et importez le module de copie

Pour installer le module de copie, utilisez pip −

pip install copy

Utilisez le module de copie après l'installation −

import copy

Copiez des objets en utilisant une copie superficielle

Exemple

Nous utiliserons une copie superficielle pour copier l'objet. Il crée un nouvel objet pour stocker une référence à l'élément d'origine. Voyons un exemple

import copy

# Create a List
myList = [[5, 10], [15, 20]]

# Display the list
print("List = ", myList)

# Shallow Copy
myList2 = copy.copy(myList)

# Display the copy of the List
print("New copy of the list =", myList2)

Sortie

List =  [[5, 10], [15, 20]]
New copy of the list = [[5, 10], [15, 20]]

Dans l'exemple ci-dessus, nous avons réalisé une copie superficielle de la liste en utilisant la méthode copy().

Copiez des objets à l'aide de la copie approfondie

Exemple

Nous utiliserons la méthode deepcopy() pour copier en profondeur un objet. Une copie complète crée également un nouvel objet. Voyons un exemple

import copy

# Create a List
myList = [[5, 10], [15, 20]]

# Display the list
print("List = ", myList)

# Deep Copy
myList2 = copy.deepcopy(myList)

# Display the copy of the List
print("New copy of the list =", myList2)

Sortie

List = [[5, 10], [15, 20]]
New copy of the list = [[5, 10], [15, 20]]

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer