[Python] Kopie einer mehrdimensionalen Liste

Über die Kopie der mehrdimensionalen Liste von Python ist das Verhalten für mich schwer zu verstehen, deshalb habe ich es mit den experimentellen Ergebnissen organisiert. Zusammenfassend sind "copy ()", "list [:]" und "copy.copy ()" in der Kopierbibliothek flache Kopien, die eine neue mehrdimensionale Liste und dann das Original erstellen. Fügen Sie einen Verweis auf die Liste in der Liste ein. Die Kopierbibliothek "copy.deepcopy ()" ist eine tiefe Kopie, die eine neue mehrdimensionale Liste erstellt und dann eine Kopie der Liste in die ursprüngliche Liste einfügt.

copy() Ich bin mir nicht sicher, ob die "erste Schicht" besser oder die "erste Dimension" besser ist ... Die ID ist natürlich unterschiedlich, da die Kopie eine weitere mehrdimensionale Liste erstellt. Da es sich bei dem Inhalt der Liste jedoch um Verweise handelt, wirkt sich das Umschreiben der ersten Ebene der Kopie nicht auf die ursprüngliche Liste aus. Das Umschreiben der zweiten und nachfolgenden Ebenen wird jedoch auf das Original übertragen, obwohl die ID unterschiedlich ist.

copy()


lst = [[0]*3 for _ in range(3)]

lst1 = lst.copy()

lst1[1] = ['r'] * 3
print('lst1 = ', lst1)
print('id(lst1) = %d' % id(lst1))
print('lst = ', lst)
print('id(lst) = %d' % id(lst))

lst1[0][1] = 'r'
print('lst1 = ', lst1)
print('id(lst1) = %d' % id(lst1))
print('lst = ', lst)
print('id(lst) = %d' % id(lst))

Ausgabe


lst1 =  [[0, 0, 0], ['r', 'r', 'r'], [0, 0, 0]]
id(lst1) = 139730947400512
lst =  [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
id(lst) = 139730946890944
lst1 =  [[0, 'r', 0], ['r', 'r', 'r'], [0, 0, 0]]
id(lst1) = 139730947400512
lst =  [[0, 'r', 0], [0, 0, 0], [0, 0, 0]]
id(lst) = 139730946890944

List [:]

Gleich wie "copy ()".

python:aufführen[:]


lst = [[0]*3 for _ in range(3)]

lst1 = lst[:]

lst1[1] = ['r'] * 3
print('lst1 = ', lst1)
print('id(lst1) = %d' % id(lst1))
print('lst = ', lst)
print('id(lst) = %d' % id(lst))

lst1[0][1] = 'r'
print('lst1 = ', lst1)
print('id(lst1) = %d' % id(lst1))
print('lst = ', lst)
print('id(lst) = %d' % id(lst))

Ausgabe


lst1 =  [[0, 0, 0], ['r', 'r', 'r'], [0, 0, 0]]
id(lst1) = 140313735131456
lst =  [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
id(lst) = 140313734622336
lst1 =  [[0, 'r', 0], ['r', 'r', 'r'], [0, 0, 0]]
id(lst1) = 140313735131456
lst =  [[0, 'r', 0], [0, 0, 0], [0, 0, 0]]
id(lst) = 140313734622336

Kopierbibliothek copy.copy ()

Gleich wie "copy ()".

copy.copy()


import copy

lst = [[0]*3 for _ in range(3)]

lst1 = copy.copy(lst)

lst1[1] = ['r'] * 3
print('lst1 = ', lst1)
print('id(lst1) = %d' % id(lst1))
print('lst = ', lst)
print('id(lst) = %d' % id(lst))

lst1[0][1] = 'r'
print('lst1 = ', lst1)
print('id(lst1) = %d' % id(lst1))
print('lst = ', lst)
print('id(lst) = %d' % id(lst))

Ausgabe


lst1 =  [[0, 0, 0], ['r', 'r', 'r'], [0, 0, 0]]
id(lst1) = 139783910001664
lst =  [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
id(lst) = 139783910057280
lst1 =  [[0, 'r', 0], ['r', 'r', 'r'], [0, 0, 0]]
id(lst1) = 139783910001664
lst =  [[0, 'r', 0], [0, 0, 0], [0, 0, 0]]
id(lst) = 139783910057280

Kopierbibliothek copy.deepcopy ()

Da durch das Kopieren eine weitere mehrdimensionale Liste erstellt wird, ist die ID unterschiedlich und der Inhalt dieser Liste wird ebenfalls kopiert. Sozusagen wird ein Klon erstellt. Der Inhalt ist genau der gleiche, aber unterschiedlich, sodass das Umschreiben keine Auswirkungen auf das Original hat.

copy.deepcopy()


import copy

lst = [[0]*3 for _ in range(3)]

lst1 = copy.deepcopy(lst)

lst1[1] = ['r'] * 3
print('lst1 = ', lst1)
print('id(lst1) = %d' % id(lst1))
print('lst = ', lst)
print('id(lst) = %d' % id(lst))

lst1[0][1] = 'r'
print('lst1 = ', lst1)
print('id(lst1) = %d' % id(lst1))
print('lst = ', lst)
print('id(lst) = %d' % id(lst))

Ausgabe


lst1 =  [[0, 0, 0], ['r', 'r', 'r'], [0, 0, 0]]
id(lst1) = 139629482679488
lst =  [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
id(lst) = 139629482735040
lst1 =  [[0, 'r', 0], ['r', 'r', 'r'], [0, 0, 0]]
id(lst1) = 139629482679488
lst =  [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
id(lst) = 139629482735040

Referenz

Python - Doppelte Liste Kopieren --- flache und tiefe Kopiervorgänge [Python] So verhindern Sie, dass die ursprüngliche Liste geändert wird, indem Sie dem Argument einer von Ihnen erstellten Funktion eine Liste zuweisen

Recommended Posts

[Python] Kopie einer mehrdimensionalen Liste
Kopie von Python
Liste der Python-Module
Kopie mehrerer Listen
Kopie der Python-Einstellungen
[Einführung in die Udemy Python3 + -Anwendung] 19. Kopie der Liste
Kopieren Sie die Liste in Python
Zusammenfassung der Python3-Listenoperationen
Mehrdimensionale Array-Initialisierung der Liste
[Python] -Liste
Informationen zur Grundlagenliste der Python-Grundlagen
Python-Grundlagen: Liste
[Python] Kapitel 04-03 Verschiedene Datenstrukturen (mehrdimensionale Liste)
Mehrdimensionales Python-Array
Python-Grundlagen ①
Grundlagen von Python ①
[Python] Ruft eine Liste der Instanzvariablen ab
Grundlegende Grammatik der Python3-Reihe (Liste, Tapple)
Zusammenfassung der integrierten Methoden usw. der Python-Liste
Zusammenfassung der Verwendung der Python-Liste
[Python] Nur eine Liste der Ordner abrufen
Python-Listenmanipulation
Einführung von Python
[Einführung in die Udemy Python3 + -Anwendung] 26. Kopie des Wörterbuchs
[Python] Checklistenelemente alle, alle
[Python] Sortieren Sie die Liste von pathlib.Path in natürlicher Reihenfolge
[Python] Erstellen Sie eine Liste mit verschiedenen Zeichentypen
Liste der grundlegenden Operationen für Python3-Listen, -Tapples, -Wörterbücher und -Sätze
Liste des zu verschiebenden und zu merkenden Python-Codes
[Python] Operation der Aufzählung
Python> Liste> verlängern () oder + =
Vereinheitlichung der Python-Umgebung
Grundlagen der Python-Scraping-Grundlagen
Geschwindigkeit der Listeneinschlussnotation in Python
Filterliste in Python
[Python] Verhalten von Argmax
Python unittest assertXXX Liste
Verwendung von Python-Einheimischen ()
der Zen von Python
Liste der Aktivierungsfunktionen (2020)
Installieren von Python 3.3 rc1
[Memo] Python 3-Listensortierung
Liste der Python-APIs für OpenCV3
Python-Fehlerliste (Japanisch)
Die findähnliche Sache der Liste in Python
# 4 [Python] Grundlagen der Funktionen
Tiefe der verschachtelten Liste
Grundkenntnisse in Python
Nüchterne Trivia von Python3
Zusammenfassung der Python-Argumente
Anzeige von Brüchen (Liste)
Grundlagen von Python: Ausgabe
Installation von matplotlib (Python 3.3.2)
Anwendung von Python 3 vars
Liste der Python-Ausnahmeklassen
Verschiedene Verarbeitung von Python
Liste mit Python initialisieren
Mayungos Python-Lernhinweis: Liste der Geschichten und Links
Erstellen Sie eine Kopie einer Google Drive-Datei aus Python
Zusammenfassung der Python-Sortierung (Liste, Wörterbuchtyp, Serie, DataFrame)