Mme la méthode copy() appliquée sur les listes notamment les dictionnaires ne suffit pas pour effectuer une copie réelle des éléments car il se peut que l'objet dictionnaire ou bien List contient des éléments de niveaux supérieur tels que les élément imbriqués alors dans ce cas la méthode copy() est insuffisante de copier réellement les éléments, en effet voici un contre-exemple : #code source : original_dict = {'a': 1, 'b': [2, 3]} copied_dict = original_dict.copy() # Modifions la liste dans la copie copied_dict['b'][0] = 'x' print(original_dict) # Affichera: {'a': 1, 'b': ['x', 3]} print(copied_dict) # Affichera: {'a': 1, 'b': ['x', 3]} #Fin du programme Je propose comme solution l'appel de la fonction deepcopy() du module copy(),celle-ci permet de copier les éléments réellement càd il effectue ce qu'on appelle une copie en profondeur(Deep copy) #Solution proposée : import copy original_dict = {'a': 1, 'b': [2, 3]} deep_copied_dict = copy.deepcopy(original_dict) #appel de la fct deepcopy() # Modifions la liste dans la copie deep_copied_dict['b'][0] = 'x' print(original_dict) # Affichera: {'a': 1, 'b': [2, 3]} print(deep_copied_dict) # Affichera: {'a': 1, 'b': ['x', 3]} #fin Comme vous remarquez ici dans cet exemple l'objet 1 origine_dict reste intact même après modification de l'objet 2 deep_copied_dict,donc les 2 objets sont indépendants grâce à la fonction deepcopy() du module standard copy
Merci infiniment .Grâce à vous je comprend beaucoup mieux les tuples et les dictionnaires. Vous êtes juste incroyable! Bonne continuation
macha allah aalik
mrti lhbiba
Mme la méthode copy() appliquée sur les listes notamment les dictionnaires ne suffit pas pour effectuer une copie réelle des éléments car il se peut que l'objet dictionnaire ou bien List contient des éléments de niveaux supérieur tels que les élément imbriqués alors dans ce cas la méthode copy() est insuffisante de copier réellement les éléments, en effet voici un contre-exemple :
#code source :
original_dict = {'a': 1, 'b': [2, 3]}
copied_dict = original_dict.copy()
# Modifions la liste dans la copie
copied_dict['b'][0] = 'x'
print(original_dict) # Affichera: {'a': 1, 'b': ['x', 3]}
print(copied_dict) # Affichera: {'a': 1, 'b': ['x', 3]}
#Fin du programme
Je propose comme solution l'appel de la fonction deepcopy() du module copy(),celle-ci permet de copier les éléments réellement càd il effectue ce qu'on appelle une copie en profondeur(Deep copy)
#Solution proposée :
import copy
original_dict = {'a': 1, 'b': [2, 3]}
deep_copied_dict = copy.deepcopy(original_dict) #appel de la fct deepcopy()
# Modifions la liste dans la copie
deep_copied_dict['b'][0] = 'x'
print(original_dict) # Affichera: {'a': 1, 'b': [2, 3]}
print(deep_copied_dict) # Affichera: {'a': 1, 'b': ['x', 3]}
#fin
Comme vous remarquez ici dans cet exemple l'objet 1 origine_dict reste intact même après modification de l'objet 2 deep_copied_dict,donc les 2 objets sont indépendants grâce à la fonction deepcopy() du module standard copy