Flache Python-Kopie und tiefe Kopie

Beachten Sie, dass ich kürzlich nach flachen und tiefen Kopien der Liste gesucht habe. (Referenz: 8.10. Kopieren - Flache Kopier- und Tiefkopiervorgänge)

Wenn Sie eine Liste kopieren und den Wert einer Liste ändern, ändert sich normalerweise auch der Wert der anderen Liste ~~ (flache Kopie) ~~

2017/9/17 Nachtrag Ich habe einen Kommentar erhalten. Vielen Dank, dlpyvim.

Ich denke nicht, dass das obige Beispiel eine flache Kopie ist. Eine flache Kopie ist copy.copy (). Der Unterschied zu copy.deepcopy () besteht darin, ob eine Referenz eingefügt oder rekursiv kopiert werden soll, wenn sich das Objekt darin befindet.

>>> 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]

Um dies zu vermeiden, können Sie anscheinend die Funktion deepcopy () (Deep Copy) verwenden.

>>> 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]

Wenn Sie dies beim Erstellen einer leeren Liste nicht beachten, treten Probleme auf, da der Wert ohne Erlaubnis eingegeben wird.

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

Wenn Sie eine solche zweidimensionale leere Liste erstellen möchten, sollten Sie die Listeneinschlussnotation verwenden.

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

Recommended Posts

Flache Python-Kopie und tiefe Kopie
Flache Python-Kopie und tiefe Kopie
Sie können die flache / tiefe Kopie von Python auf einen Blick auf PythonTutor.org sehen
Über flache und tiefe Kopien von Python / Ruby
Python # Über Referenz und Kopie
"Tiefe Kopie" und "flache Kopie", um mit dem kleinsten Beispiel zu verstehen
Kopieren Sie die Datei und schreiben Sie den Zellenwert @python neu
Kopie von Python
Python Deep Learning
Deep Learning × Python
[Python] Komprimieren und dekomprimieren
Python- und Numpy-Tipps
[Python] Pip und Wheel
Python: Deep Learning-Praxis
Kopie der Python-Einstellungen
Python Iterator und Generator
Python-Pakete und -Module
Vue-Cli- und Python-Integration
Python-Eingabe und Ausgabe
Python und Ruby teilen sich
Python: Deep Learning Tuning
Python asyncio und ContextVar
Deep Python hat von DEAP gelernt
Programmieren mit Python und Tkinter
Python: Klassen- und Instanzvariablen
Python 2-Serie und 3-Serie (Anaconda Edition)
Python und Hardware-Verwenden von RS232C mit Python-
Python-Einzug und String-Format
Python Real Number Division (/) und Integer Division (//)
Installieren Sie Python und Flask (Windows 10)
Informationen zu Python-Objekten und -Klassen
Informationen zu Python-Variablen und -Objekten
Apache mod_auth_tkt und Python AuthTkt
Å (Ongustorome) und NFC @ Python
[Python] Wird es nicht kopiert, obwohl "copy ()" fertig ist? Überzeugungen und Misserfolge über tiefes Kopieren
Lernen Sie Python-Pakete und -Module kennen
# 2 [python3] Trennung und Kommentar aus
Python und Ruby Slice Memo
Python-Installation und grundlegende Grammatik
Ich habe Java und Python verglichen!
Über Python, len () und randint ()
Informationen zu Python-Datums- und Zeitzone
Installieren Sie Python 3.7 und Django 3.0 (CentOS)
Python-Umgebungskonstruktion und TensorFlow
Python-Klassen- und Instanzvariablen
Ruby- und Python-Syntax ~ branch ~
[Python] Python und Sicherheit - is Was ist Python?
Stapel und Warteschlange in Python
Python-Metaklasse und SQLalchemie deklarativ
Implementierung von Fibonacci und Primzahlen (Python)
Python-Grundlagen: Bedingungen und Iterationen
Python-Bitoperator und logische Summe
Python-Debug- und Testmodul
[Python] Kopie einer mehrdimensionalen Liste
Python-Liste und Tapples und Kommas
Python-Variablen und Objekt-IDs
Python-Listeneinschlussnotation und Generator
Über Python und reguläre Ausdrücke
Python mit Pyenv und Venv