copier vers Python (copie profonde et copie superficielle)

| | | |

Parfois, une copie est nécessaire pour que vous puissiez modifier une copie sans en modifier une autre. Python a deux façons de faire des copies :

  • Copie profonde
  • Copie superficielle

Pour faire ces copies, nous utilisons copier le module . Nous utilisons le module copy pour les opérations de copie superficielle et profonde. Par exemple


# import copy module

import copier


# initialiser la liste 1

li1 = [ 1 , 2 , [ 3 , 5 ], 4 ]


# utiliser la copie pour une copie superficielle

li2 = co py.copy ( li1)


# utiliser Deepcopy pour Deepcopy

li3 = copy.deepcopy (li1)

Dans le code ci-dessus, copy () renvoie une copie superficielle de la liste, et deepcopy () renvoie une copie approfondie de la liste.

deepcopy

Copie en profondeur — c`est un processus dans lequel le processus de copie se produit de manière récursive. Cela signifie d`abord créer un nouvel objet de collection, puis le remplir de manière récursive avec des copies des objets enfants trouvés dans l`original. Dans le cas d`une copie complète, une copie d`un objet est copiée dans un autre objet. Cela signifie que toute modification apportée à la copie de l`objet n`est pas répercutée dans l`objet d`origine. En python, cela se fait à l`aide de la fonction deepcopy () .


# Code Python pour démontrer les opérations de copie


# import & quot; copier & quot; pour les opérations de copie

import copier


# initialisation de la liste 1

li1 = [ 1 , 2 , [ 3 , 5 ], 4 ]


# utiliser Deepcopy pour copier en profondeur

li2 = copy.deepcopy (li1)


# éléments de la liste d`origine

print ( "Les éléments d`origine avant la copie en profondeur" )

pour i in range ( 0 , len (li1)) :

print (li1 [i], end = " " )

print ( " " )


# ajouter un élément à la nouvelle liste

li2 [ 2 ] [ 0 ] = 7


# Le changement est reflété dans l2

print ( "La nouvelle liste d`éléments après copie profonde " )

for i in plage ( 0 , len (li1)) :

print (li2 [i], end = "" )


imprimer ( "" )


# Le changement est NON reflété dans la liste d`origine
# comme une copie complète

imprimer ( "Les éléments d`origine après copie en profondeur" )

pour i dans plage ( 0 , len (li1)):

print (li1 [i], end = "" )

Quitter :

L`élément d`origine s avant copie profonde 1 2 [3, 5] 4 La nouvelle liste d`éléments après copie profonde 1 2 [7, 5] 4 Les éléments d`origine après copie profonde 1 2 [3, 5] 4 

Dans l`exemple ci-dessus, une modification apportée à la liste n`a pas affecté les autres listes, indiquant une liste de copie en profondeur.

Copie superficielle

La copie superficielle signifie créer un nouvel objet de collection, puis le remplir avec des références aux objets enfants trouvés dans la version originale. Le processus de copie ne se répète pas et ne crée donc pas de copies des objets enfants eux-mêmes. Dans le cas d`une copie superficielle, une référence à un objet est copiée dans un autre objet. Cela signifie que toute modification apportée à la copie de l`objet est répercutée dans l`objet d`origine. Python le fait avec la fonction "copy () ".


# Code Python pour démontrer les opérations de copie


# importer & quot; copier & quot; pour les opérations de copie

import copier


# initialisation de la liste 1

li1 = [ 1 , 2 , [ 3 , 5 ], 4 ]


# utiliser la copie pour une copie superficielle

li2 = copy.copy (li1)


# éléments de la liste d`origine

print ( " Les éléments d`origine avant copie superficielle " )

pour i in range ( 0 , len (li1)):

print (li1 [i], end = "" )


imprimer ( "" )


# ajouter un élément à la nouvelle liste

li2 [ 2 ] [ 0 ] = 7


# vérifie si le changement est reflété

print ( "Les éléments d`origine après une copie superficielle" )

pour i dans range ( 0 , len (li1 )) :

print (li1 [i], end = " " )

Quitter :

Les éléments originaux avant la copie superficielle 1 2 [3, 5] 4 Les éléments d`origine après copie superficielle 1 2 [7, 5] 4 

Dans l`exemple ci-dessus, la modification apportée à la liste est a pris effet sur une autre liste, indiquant que la liste a été copiée.

Points importants :
La différence entre les copies superficielles et profondes ne s`applique qu`aux objets composites (objets qui contiennent d`autres objets, tels que des listes ou des instances de classe) :

  • La copie superficielle crée un nouvel objet composite puis (dans la mesure du possible) insère des références aux objets trouvés dans l`original.
  • Une copie complète crée un nouvel objet composé, puis y insère de manière récursive des copies des objets trouvés dans l`original.

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method