Copie superficielle Python et copie profonde

Notez que j'ai récemment recherché des copies superficielles et profondes de la liste. (Référence: 8.10. Copy - Copie superficielle et opérations de copie profonde)

Normalement, si vous copiez une liste et changez la valeur d'une liste, la valeur de l'autre liste changera également ~~ (copie superficielle) ~~

PostScript 2017/9/17 J'ai reçu un commentaire. Merci dlpyvim.

Je ne pense pas que l'exemple ci-dessus soit une copie superficielle. Une copie superficielle est copy.copy (). La différence avec copy.deepcopy () est de savoir s'il faut insérer une référence ou copier récursivement si l'objet est à l'intérieur.

>>> l = [1, 2, 3]
>>> l2 = l
>>> l
[1, 2, 3]
>>> l2
[1, 2, 3]
>>> l[2] = 4
>>> l
[1, 2, 4]
>>> l2
[1, 2, 4]

Pour éviter cela, il semble que vous puissiez utiliser la fonction deepcopy () (copie profonde).

>>> l = [1, 2, 3]
>>> import copy
>>> l2 = copy.deepcopy(l)
>>> l
[1, 2, 3]
>>> l2
[1, 2, 3]
>>> l[2] = 4
>>> l
[1, 2, 4]
>>> l2
[1, 2, 3]

Si vous ne faites pas attention à cela lorsque vous créez une liste vide, vous aurez des problèmes car la valeur sera saisie sans autorisation.

>>> empty = [[]] * 5
>>> empty
[[], [], [], [], []]
>>> empty[0].append(1)
>>> empty
[[1], [1], [1], [1], [1]]

Si vous souhaitez créer une telle liste vide bidimensionnelle, vous devez utiliser la notation d'inclusion de liste.

>>> empty = [[] for x in range(5)]
>>> empty
[[], [], [], [], []]
>>> empty[0].append(1)
>>> empty
[[1], [], [], [], []]

Recommended Posts

Copie superficielle Python et copie profonde
Copie superficielle Python et copie profonde
Vous pouvez voir la copie superficielle / profonde de python en un coup d'œil @ PythonTutor.org
À propos des copies superficielles et profondes de Python / Ruby
Python # À propos de la référence et de la copie
"Copie profonde" et "Copie superficielle" à comprendre avec le plus petit exemple
Copiez le fichier et réécrivez la valeur de la cellule @python
Copie de python
Apprentissage en profondeur Python
Apprentissage profond × Python
[python] Compresser et décompresser
Astuces Python et Numpy
[Python] pip et roue
Python: pratique du Deep Learning
Copie des préférences python
Itérateur et générateur Python
Paquets et modules Python
Intégration Vue-Cli et Python
entrée et sortie python
Python et Ruby se séparent
Python: réglage du Deep Learning
Python asyncio et ContextVar
Deep Python appris de DEAP
Programmation avec Python et Tkinter
Python: variables de classe et d'instance
Série Python 2 et série 3 (édition Anaconda)
Python et matériel - Utilisation de RS232C avec Python -
Indentation Python et format de chaîne
division des nombres réels python (/) et division des nombres entiers (//)
Installez Python et Flask (Windows 10)
À propos des objets et des classes Python
À propos des variables et des objets Python
Apache mod_auth_tkt et Python AuthTkt
Å (Ongustorome) et NFC @ Python
[Python] N'est-il pas copié même si "copy ()" est fait? Croyances et échecs concernant la copie profonde
Apprenez à connaître les packages et les modules Python
# 2 [python3] Séparation et commentaire
Mémo tranche python et rubis
Installation de Python et grammaire de base
J'ai comparé Java et Python!
À propos de Python, len () et randint ()
À propos de la date et du fuseau horaire Python
Installez Python 3.7 et Django 3.0 (CentOS)
Construction d'environnement Python et TensorFlow
Variables de classe et d'instance Python
Syntaxe Ruby et Python ~ branch ~
[Python] Python et sécurité-① Qu'est-ce que Python?
Pile et file d'attente en Python
métaclasse python et déclaration sqlalchemy
Implémentation de Fibonacci et des nombres premiers (python)
bases de python: conditions et itérations
Opérateur de bits Python et somme logique
Module de débogage et de test Python
[Python] Copie d'une liste multidimensionnelle
Liste Python et tapples et virgules
Variables Python et ID d'objet
Notation et générateur d'inclusion de liste Python
À propos de Python et des expressions régulières
python avec pyenv et venv