Maison  >  Article  >  développement back-end  >  Une explication simple de la copie profonde et superficielle en python (avec code)

Une explication simple de la copie profonde et superficielle en python (avec code)

不言
不言avant
2018-10-27 16:03:551951parcourir

Ce que cet article vous apporte est une explication simple de la copie profonde et superficielle en Python (avec du code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Revoir, copier en profondeur.

Code ci-dessus :

# -*- coding: utf-8 -*-
"""
Created on Thu Sep 20 14:18:48 2018

@author: Lenovo
"""

import copy,json

a={"ab":1,"cd":{"ef":2},"gh":[1,2,3]}
print "a1:",a

b=dict(a["cd"])
c=copy.copy(a)
d=copy.deepcopy(a)
e=a["cd"]
a["cd"]["xy"]=3
a["fx"]=5
a["cd"]["ef"]=20
print "a2:",a
print "b :",b
print "c :",c
print "d :",d
print "e :",e

Résultat :

a1: {'gh': [1, 2, 3], 'ab': 1, 'cd': {'ef': 2}}
a2: {'gh': [1, 2, 3], 'fx': 5, 'ab': 1, 'cd': {'xy': 3, 'ef': 20}}
b : {'ef': 2}
c : {'cd': {'xy': 3, 'ef': 20}, 'ab': 1, 'gh': [1, 2, 3]}
d : {'cd': {'ef': 2}, 'ab': 1, 'gh': [1, 2, 3]}
e : {'xy': 3, 'ef': 20}

Comme le montre le résultat :

La commande dict() crée un new Dictionary;

"="L'affectation équivaut à utiliser le concept de "référence";

copy.copy est une copie superficielle entraînera des modifications correspondantes, de nouveaux ajouts. ou autre Si les informations non copiées sont modifiées, l'objet de copie superficielle ne sera pas modifié

Par exemple, la plage de copie c est "gh", "ab", "cd" si la valeur de celles-ci. Modification de trois clés, l'objet sera modifié en conséquence après la copie, mais si d'autres informations sont modifiées, comme l'ajout de la clé "fx", l'objet copié ne sera pas modifié.

copy.deepcopy est une copie profonde, créant un tout nouvel objet.

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